我正在尝试将我的lucene从3.0升级到4.9。我按国家/地区编写了一个自定义排序,只是检查该国家是否与查询所查找的相同,然后是该文档的大陆与该查询所查找的大陆的接近程度。
它不是过滤器 - 我想要所有结果,只按国家排序。
例如 - 我正在寻找鞋店,我在美国。
所以美国的所有鞋店都是第一家,其次是加拿大,墨西哥,英国,俄罗斯等。
我的自定义排序没有编译,我找不到如何在lucene 4.X中编写自定义排序的任何示例。
我研究了地理空间搜索,但它似乎也先过滤,然后排序。
任何人都可以帮我提一下lucene 4.X的自定义排序示例吗?
答案 0 :(得分:2)
也许,这个问题更好地被视为评分问题,而不是排序问题。通过这种方式,问题变为:如何使用国家/地区之间的距离(而不是df / idf指标)来评分您的文档。一旦得分正确,默认排序方法将是合适的。
基本上,扩展CustomScoreQuery和CustomScoreProvider类是必要的。
此博文(Lucene Custom Scoring)显示了扩展示例。
为了更准确一点,我的建议是:
1-添加"距离知识"在您的扩展 CustomScoreProvider ;
中2-在已覆盖的 customScore 方法中,检索文档的国家/地区;
3-计算文档的国家/地区和查询的国家/地区之间的距离(请记住通过CustomScoreQuery提供此信息);
4-返回你的分数:)
我希望这个策略适合你。
P.S。博客文章与4.6版相关。对于版本4.9,可能需要进行一些调整才能正常工作。