首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模糊匹配与地理距离排序相结合的弹性搜索

问模糊匹配与地理距离排序相结合的弹性搜索
EN

Stack Overflow用户
提问于 2018-05-14 13:31:57
回答 1查看 744关注 0票数 1

我有一个Elasticsearch查询,其中包括bool必须匹配的查询以及geo距离排序。我允许比赛中的模糊等级为1。我遇到的问题是,排序会导致匹配的文档分数被忽略,因此,如果模糊匹配在地理上更接近搜索位置,那么结果列表中就有可能出现几个模糊匹配。

是否有一种将模糊匹配与地理距离排序相结合的方法,使精确匹配仍然优先于距离较近的模糊匹配?或者-我是不是想错了,我需要采取不同的方法吗?

我考虑过的另一个选项是使用地理距离过滤器(5、10、25英里等)在不同的搜索半径波段执行多个查询,而不进行距离排序,并结合结果。如果可能的话,我想避免多次查询,因为这对于提前输入特性和性能是至关重要的。

目前,我的查询如下所示:

代码语言:javascript
复制
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"
      }
    }
  ]
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-05-15 09:53:42

我建议您按照_geo_distance 和 _score进行排序,_score排序排在前面。

代码语言:javascript
复制
"sort": [
    "_score",
    {
      "_geo_distance" : {
          "location" : [-93.26000213623047, 44.970001220703125],
          "order" : "asc",
          "unit" : "mi",
          "mode" : "min",
          "distance_type" : "arc"
      }
    }
  ]

在这种情况下,您将首先通过匹配排序,这将使完全匹配看起来更高,而对于相同的分数,您将排序的距离。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50331617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档