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

Cla*_*ell 10 distance geolocation elasticsearch

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

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

我想传入一个搜索字符串,说"咖啡"和一个纬度/经度,比如说"38,-77",并通过它们与"咖啡"的相关程度以及它们的接近程度来获得我的结果他们是"38,-77".

谢谢!

Jil*_*urp 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" }}},
    ]
  }
}
Run Code Online (Sandbox Code Playgroud)

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


imo*_*tov 6

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