
Lucene exact ordering我遇到了一个长期问题,就是不太了解如何实现不错的Lucene排序或排名。假设我有一个城市及其人口清单。如果有人搜索" new "或" london ",我希望按人口顺序对前缀匹配列表进行排序,那么我可以使用前缀搜索和反向按字段排序(其中存在人口字段,即IE New)墨西哥,纽约;或伦敦德里(Londonderry)的伦敦。 但是,我也始终希望精确匹配的名称位于顶部。因此,对于"伦敦",该列表应显示"伦敦,伦敦,伦敦德里",其中第一个伦敦在英国,第二个伦敦在康涅狄格州,即使Londonderry的人口比伦敦CT高。 有人有一个查询解决方案吗? dlamblin,让我看看我是否正确:您要进行基于前缀的查询,然后按总体对结果进行排序,并可能将排序顺序与首选项进行精确匹配。 的API
说
您可以应用
到sortcomparator,其中有一个Comparator字段,api表示...
因此可以对术语进行相应的排序 我当前的解决方案是创建一个精确的搜索器和一个前缀搜索器,二者均按反向填充排序,然后从精确的匹配项开始复制所有我的匹配项,然后移至前缀匹配项。分页使我的结果分页比我想象的要烦。 我也使用哈希来消除重复项,但后来将前缀搜索器更改为前缀搜索(MUST)和精确搜索(MUST NOT)的布尔查询,以使Lucene删除重复项。尽管这似乎更加浪费。 编辑:移至评论(由于该功能现在已存在):Yuval F感谢您的博客文章……排序比较器将如何知道名称字段" london "与搜索词"完全匹配伦敦",如果它无法访问搜索词? |