java Lucene按国家排序
我正在尝试将lucene从3.0升级到4.9。我编写了一个按国家进行的自定义排序,只需检查国家是否与查询要查找的国家相同,然后检查文档所在的大陆与查询要查找的大陆之间的距离
这不是一个过滤器——我想要所有的结果,只是按国家排序
例如,我正在寻找鞋店,我在美国
因此,美国所有的鞋店都将排在第一位,其次是加拿大、墨西哥、英国、俄罗斯和澳大利亚;c
我的自定义排序没有编译,我找不到任何关于如何在lucene 4中编写自定义排序的示例。X
我研究了地理空间搜索,但这似乎也是先过滤,然后排序
谁能帮我举一个lucene 4的定制排序示例吗。X
# 1 楼答案
也许,这个问题最好被视为得分问题,而不是排序问题。这样一来,问题就变成了:如何使用国家之间的距离(而不是df/idf指标)为文档打分。一旦正确评分,默认的排序方法将是合适的
基本上,有必要扩展CustomScoreQuery和CustomScoreProvider类
这篇博文(Lucene Custom Scoring)展示了一个扩展示例
更确切地说,我的建议是:
1-在扩展的CustomScoreProvider中添加“距离知识”
2-在覆盖的customScore方法中,检索文档的国家/地区
3-计算文档所在国家和查询所在国家之间的距离(记住通过CustomScoreQuery输入此信息)
4-返回你的分数:)
我希望这个策略适合你
另外,这篇博文与4.6版有关。要正确使用4.9版,可能需要进行一些调整