11

尝试使用 ElasticSearch 创建使用与中心点的距离来影响相关性的搜索。

我不想简单地对与某个点的距离进行排序,我知道这是可能的,因为我希望基于搜索查询的相关性也会影响结果。

我想传入一个搜索字符串,比如“coffee”和一个纬度/经度,比如“38,-77”,然后根据它们与“coffee”的相关程度和接近程度的组合对我的结果进行排序他们是“38,-77”。

谢谢!

4

2 回答 2

11

最近 (0.90.4) 添加的 function_score 查询类型增加了对基于距离的排名的支持。这是自定义分数查询类型的替代方案。

http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-function-score-query.html

从那里举出的一个例子:

"query": {
  "function_score": {
    "functions": [
      { "gauss":  { "loc":   { "origin": "51,0", "scale": "5km" }}},
    ]
  }
}

这将衰减函数(有几个)应用于一个字段(“loc”),该函数根据与给定特定比例的原点的距离进行评分。这正是您想要的距离排名,因为它为您在不编写自定义脚本的情况下如何排名提供了很大的灵活性。

于 2013-10-16T15:44:28.730 回答
7

您可以使用自定义分数查询脚本中的distance函数来根据与中心点的距离进行修改。_score

于 2012-10-24T16:25:39.520 回答