我正在嘗試使用彈性搜索來存儲地理空間數據。不過,我希望相關性分數是來自某個點的距離和基於文本匹配查詢的相關性的組合。例如,假設查詢是Yellowstone National Park
,但原點在芝加哥。在芝加哥的Portage Park
更可能匹配,因爲任何合理的距離和衰減,因爲Yellowstone National Park
將衰減分數接近於零,並且不會顯示在結果中。我想要做的就是在衰減分數上有一個FLOOR,這樣超出一定的距離後,所有的結果看起來都是一樣的。如何設置ElasticSearch中的高斯衰減函數?
例如,這裏的Java代碼,我有:
queryBuilder = new FunctionScoreQueryBuilder(queryBuilder).add(
ScoreFunctionBuilders.gaussDecayFunction("search_geo_point", point.get(), "10km")
.setDecay(0.75)
.setOffset("5km"));
我希望做的是把那些大於說30公里從起源相同,並具有衰減功能沒有的所有點更長的時間將分數降低到超過該點。這可能嗎?問題在於,超過一定的距離衰減函數會大大降低相關性,即使查詢與文本字段完全匹配,它也不會出現在結果中。