I am having problem a similar problem too. Here is how I set it up the
test index:
Create the index:
curl -s -XPUT 'localhost:9200/test' -d '{
"mappings": {
"properties": {
"name": {
"street": {
"type": "string",
"index_analyzer": "not_analyzed",
"search_analyzer": "not_analyzed",
"index" : "not_analyzed"
}
}
}
}
}'
Inert some data:
curl -s -XPUT 'localhost:9200/test/name/5' -d '{ "street": ["E Main St"]}'
curl -s -XPUT 'localhost:9200/test/name/6' -d '{ "street": ["W Main St"] }'
curl -s -XPUT 'localhost:9200/test/name/7' -d '{ "street": ["East Main Rd"]
}'
curl -s -XPUT 'localhost:9200/test/name/8' -d '{ "street": ["West Main Rd"]
}'
curl -s -XPUT 'localhost:9200/test/name/9' -d '{ "street": ["Main"] }'
curl -s -XPUT 'localhost:9200/test/name/10' -d '{ "street": ["Main St"] }'
--Now attempt to search for "Main"... Not "Main St", Not "East Main Rd"...I
only want to return doc #9 - "Main"
curl -s -XGET 'localhost:9200/test/_search?pretty=true' -d '{
"query":{
"bool":{
"must":[
{
"match":{
"street":{
"query":"main",
"type":"phrase",
"analyzer" : "keyword"
}
}
}
]
}
}
}';
The best document returned is "Main", but I don't know how to filter out
the others that are not exact matches (although they contain matching
terms).
...
Here the results from my example above:
"_score" : 0.2876821, "_source" : { "street": ["Main"] }
"_score" : 0.25316024, "_source" : { "street": ["East Main Rd"] }
"_score" : 0.25316024, "_source" : { "street": ["W Main St"] }
"_score" : 0.25316024, "_source" : { "street": ["E Main St"]}
"_score" : 0.1805489, "_source" : { "street": ["Main St"] }
"_score" : 0.14638957, "_source" : { "street": ["West Main Rd"] }
On Thursday, June 14, 2012 3:38:31 PM UTC-4, Colin Dellow wrote:
Does "index": "not_analyzed" not work for you (
Elasticsearch Platform — Find real-time answers at scale | Elastic) ?
On Thursday, 14 June 2012 14:02:28 UTC-4, Greg Silin wrote:
Hi,
One of our fields in the index stores city names, and we need to ensure
that the term is matched exactly.
So if we have "san francisco" indexed, we need to ensure that only the
term "san francisco" matches; "san" or "francisco" or "south san francisco"
should all be misses.
In particular, I don't have a solution on how to make sure "san
francisco" does not match against "south san francisco"
Thanks
-greg
--
You received this message because you are subscribed to the Google Groups "elasticsearch" group.
To unsubscribe from this group and stop receiving emails from it, send an email to elasticsearch+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/elasticsearch/42921778-0a92-4a57-ab6f-7f089ebe95ec%40googlegroups.com.
For more options, visit https://groups.google.com/groups/opt_out.