[ES - 1.0.0] Trouble doing a split match with edgeNgram


(عمر) #1

Hi,

I am trying to query for "fit pro" against my index where there is a
document with "fitpro" on one of its fields. Decided to take the following
approach with it:

  • Create a reverse edgeNgram tokenizer
  • Used the edgeNgram tokenizer only of index_analyzer
  • Boost on match prefix and match (edgeNgram field)

Am getting the result after couple of hits down the list. Playing with the
weights is not changing much :confused:

Any help would be much appreciated.

Index mapping is -

'settings':{
'number_of_shards': 1,
'number_of_replicas': 0,
"analysis": {
"filter" : {
"filter_edgeNgram" : {
"type" : "edgeNGram",
"min_gram" : "3",
"max_gram" : "6",
"token_chars": [ "letter", "digit" ]
}
},
"analyzer": {
"analyzer_ngram_rev" : {
"type":"custom",
"tokenizer": "standard",
"filter": ["standard", "lowercase", "asciifolding", "reverse",
"filter_edgeNgram", "reverse"]
},
"analyzer_stemmed" : {
"tokenizer":"standard",
"filter":["standard", "lowercase", "asciifolding", "kstem"]
}
}
}
}
},
ignore=400

Query is -

{
"from" : 0,
"size" : 60,
"query" : {
"function_score" : {
"query" : {
"filtered" : {
"query" : {
"bool" : {
"should" : [ {
"query_string" : {
"query" : "fit~1 pro~1 ",
"minimum_should_match" : "60%"
}
}, {
"match" : {
"name" : {
"query" : "fit",
"type" : "phrase_prefix"
}
}
}, {
"match" : {
"name_ngram_fwd" : {
"query" : "fit pro",
"type" : "boolean"
}
}
}, {
"match" : {
"name_stemmed" : {
"query" : "fit pro",
"type" : "boolean"
}
}
} ]
}
},
"filter" : {
"geo_distance" : {
"location" : [ 41.880001068115234, -87.62000274658203 ],
"distance" : "16km"
}
}
}
},
"functions" : [ {
"filter" : {
"geo_distance" : {
"location" : [ 41.880001068115234, -87.62000274658203 ],
"distance" : "16km"
}
},
"boost_factor" : 2.0
}, {
"filter" : {
"query" : {
"query_string" : {
"query" : "fit~1 pro~1 ",
"minimum_should_match" : "60%"
}
}
},
"boost_factor" : 1.0
}, {
"filter" : {
"query" : {
"match" : {
"name" : {
"query" : "fit",
"type" : "phrase_prefix"
}
}
}
},
"boost_factor" : 4.0
}, {
"filter" : {
"query" : {
"match" : {
"name_ngram_rev" : {
"query" : "fit pro"
}
}
}
},
"boost_factor" : 6.0
}, {
"filter" : {
"query" : {
"query_string" : {
"query" : "fit pro"
}
}
},
"boost_factor" : 2.0
} ],
"score_mode" : "multiply"
}
},
"fields" : "_source",
"script_fields" : {
"distance" : {
"script" : "doc['location'].distanceInKm(41.880001,-87.620003)"
}
}
}

--
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/9fefa584-ee2f-42e1-ae38-6fa494df5ddd%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.


(system) #2