尝试使用 ElasticSearch 创建一个搜索,该搜索使用与中心点的距离来影响相关性。
我不想简单地根据与某个点的距离进行排序,我知道这是可能的,因为我希望基于搜索查询的相关性也会影响结果。
我想传入一个搜索字符串,例如“coffee”和一个纬度/经度,例如“38, -77”,然后根据它们与“coffee”的相关程度组合对我的结果进行排序以及它们与“38,-77”的接近程度。
谢谢!
最佳答案
最近 (0.90.4) 添加的 function_score 查询类型增加了对基于距离排名的支持。这是自定义分数查询类型的替代方法。
举个例子:
"query": {
"function_score": {
"functions": [
{ "gauss": { "loc": { "origin": "51,0", "scale": "5km" }}},
]
}
}
这将衰减函数(有多个)应用于一个字段(“loc”),该字段在给定特定比例的情况下根据与原点的距离进行评分。这正是您想要的距离排名,因为它为您提供了很大的灵 active ,无需编写自定义脚本即可进行排名。
关于geolocation - ElasticSearch——使用距点的距离影响查询相关性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13053295/