Lucene按国家排序

时间:2014-07-25 18:42:00

标签: java sorting lucene

我正在尝试将我的lucene从3.0升级到4.9。我按国家/地区编写了一个自定义排序,只是检查该国家是否与查询所查找的相同,然后是该文档的大陆与该查询所查找的大陆的接近程度。

它不是过滤器 - 我想要所有结果,只按国家排序。

例如 - 我正在寻找鞋店,我在美国。

所以美国的所有鞋店都是第一家,其次是加拿大,墨西哥,英国,俄罗斯等。

我的自定义排序没有编译,我找不到如何在lucene 4.X中编写自定义排序的任何示例。

我研究了地理空间搜索,但它似乎也先过滤,然后排序。

任何人都可以帮我提一下lucene 4.X的自定义排序示例吗?

1 个答案:

答案 0 :(得分:2)

也许,这个问题更好地被视为评分问题,而不是排序问题。通过这种方式,问题变为:如何使用国家/地区之间的距离(而不是df / idf指标)来评分您的文档。一旦得分正确,默认排序方法将是合适的。

基本上,扩展CustomScoreQueryCustomScoreProvider类是必要的。

此博文(Lucene Custom Scoring)显示了扩展示例。

为了更准确一点,我的建议是:

1-添加"距离知识"在您的扩展 CustomScoreProvider ;

2-在已覆盖的 customScore 方法中,检索文档的国家/地区;

3-计算文档的国家/地区和查询的国家/地区之间的距离(请记住通过CustomScoreQuery提供此信息);

4-返回你的分数:)

我希望这个策略适合你。

P.S。博客文章与4.6版相关。对于版本4.9,可能需要进行一些调整才能正常工作。