尝试使用ElasticSearch创建一个搜索,该搜索使用距离中心点的距离来影响相关性。
我不想简单地对距离点进行排序,我知道这是可能的,因为我希望基于搜索查询的相关性也会影响结果。
我想传入一个搜索字符串,说“咖啡”和一个纬度/经度,比如“38,-77”,并通过它们与“咖啡”的相关性来排序我的结果他们与“38,-77”有多接近。
谢谢!
答案 0 :(得分:10)
最近(0.90.4)添加的function_score查询类型添加了对基于距离的排名的支持。这是自定义分数查询类型的替代方法。
从那里解除的一个例子:
"query": {
"function_score": {
"functions": [
{ "gauss": { "loc": { "origin": "51,0", "scale": "5km" }}},
]
}
}
这将衰减函数(有几个)应用于一个字段(“loc”),该字段与给定特定比例的原点的距离进行评分。这正是您想要的距离排名,因为它为您提供了很大的灵活性,可以在不编写自定义脚本的情况下进行排名。
答案 1 :(得分:6)
您可以使用distance
function脚本中的Custom Score Query根据与中心点的距离修改_score
。