我有一个Elasticsearch查询,其中包括bool必须匹配的查询以及geo距离排序。我允许比赛中的模糊等级为1。我遇到的问题是,排序会导致匹配的文档分数被忽略,因此,如果模糊匹配在地理上更接近搜索位置,那么结果列表中就有可能出现几个模糊匹配。
是否有一种将模糊匹配与地理距离排序相结合的方法,使精确匹配仍然优先于距离较近的模糊匹配?或者-我是不是想错了,我需要采取不同的方法吗?
我考虑过的另一个选项是使用地理距离过滤器(5、10、25英里等)在不同的搜索半径波段执行多个查询,而不进行距离排序,并结合结果。如果可能的话,我想避免多次查询,因为这对于提前输入特性和性能是至关重要的。
目前,我的查询如下所示:
GET <myindex>/_search
{
"from": 0, "size": 10,
"query": {
"bool": {
"must": [
{
"match": {
"searchName": {
"query" : "my query",
"operator" : "AND",
"fuzziness" : "1",
"fuzzy_transpositions" : true
}
}
}
]
}
},
"sort": [
{
"_geo_distance" : {
"location" : [-93.26000213623047, 44.970001220703125],
"order" : "asc",
"unit" : "mi",
"mode" : "min",
"distance_type" : "arc"
}
}
]
}发布于 2018-05-15 09:53:42
我建议您按照_geo_distance 和 _score进行排序,_score排序排在前面。
"sort": [
"_score",
{
"_geo_distance" : {
"location" : [-93.26000213623047, 44.970001220703125],
"order" : "asc",
"unit" : "mi",
"mode" : "min",
"distance_type" : "arc"
}
}
]在这种情况下,您将首先通过匹配排序,这将使完全匹配看起来更高,而对于相同的分数,您将排序的距离。
https://stackoverflow.com/questions/50331617
复制相似问题