尝试使用ElasticSearch创建使用从中心点的距离来影响相关的搜索。
我不想简单地排序从一个点,这是我所知道的是可能的距离,因为我想基于搜索的查询也影响结果的相关性。
我想在搜索字符串传递,说“咖啡”和经/纬度,说:“38,-77”,并得到我的结果通过他们是如何相关是“咖啡”,以及如何紧密结合有序他们是 “38,-77”。
谢谢!
尝试使用ElasticSearch创建使用从中心点的距离来影响相关的搜索。
我不想简单地排序从一个点,这是我所知道的是可能的距离,因为我想基于搜索的查询也影响结果的相关性。
我想在搜索字符串传递,说“咖啡”和经/纬度,说:“38,-77”,并得到我的结果通过他们是如何相关是“咖啡”,以及如何紧密结合有序他们是 “38,-77”。
谢谢!
您可以使用distance
函数中的脚本自定义分数查询修改_score
基于从中心点的距离。
最近(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”)的得分对所述距离从原点给定的特定尺度。 这正是你想要什么,距离排名,因为它给了你很多的灵活性,它应该如何排名,而无需编写自定义脚本。