ElasticSearch - 使用距离点来影响查询相关性

时间:2012-10-24 16:15:43

标签: geolocation elasticsearch distance

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

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

我想传入一个搜索字符串,说“咖啡”和一个纬度/经度,比如“38,-77”,并通过它们与“咖啡”的相关性来排序我的结果他们与“38,-77”有多接近。

谢谢!

2 个答案:

答案 0 :(得分:10)

最近(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”),该字段与给定特定比例的原点的距离进行评分。这正是您想要的距离排名,因为它为您提供了很大的灵活性,可以在不编写自定义脚本的情况下进行排名。

答案 1 :(得分:6)

您可以使用distance function脚本中的Custom Score Query根据与中心点的距离修改_score