【发布时间】:2016-03-31 12:40:02
【问题描述】:
我正在尝试使用 Elastic Search 来存储地理空间数据。但是,我希望相关性分数是与点的距离和基于文本匹配查询的相关性的组合。例如,假设查询是Yellowstone National Park,但来源在芝加哥。芝加哥的Portage Park 更有可能匹配,因为对于任何合理的距离和衰减,因为Yellowstone National Park 的衰减分数接近于零并且根本不会出现在结果中。我想做的是在衰减分数上有一个 FLOOR,这样超过一定距离,所有结果看起来都一样。
例如,这是我的 Java 代码:
queryBuilder = new FunctionScoreQueryBuilder(queryBuilder).add(
ScoreFunctionBuilders.gaussDecayFunction("search_geo_point", point.get(), "10km")
.setDecay(0.75)
.setOffset("5km"));
我想做的是将距离原点大于 30 公里的所有点视为相同,并且衰减函数不再降低超过该点的分数。这可能吗?问题是,超过一定距离,衰减函数会大大降低相关性,即使查询与文本字段完全匹配,它也不会出现在结果中。
【问题讨论】:
标签: java elasticsearch