【发布时间】:2018-10-24 04:34:15
【问题描述】:
我有一个 Elasticsearch 查询,其中包括一个布尔必须匹配查询以及一个地理距离排序。我在比赛中允许模糊度为 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"
}
}
]
}
【问题讨论】:
标签: elasticsearch