在Lucene.NET中过滤排序查询的结果

时间:2011-06-21 07:01:22

标签: sorting search group-by lucene lucene.net

我正在使用Lucene.NET,这是目前最新的Lucene 2.9。我正在尝试实现一种选择不同,但不需要深入到任何组。我知道Lucene 3.2有一个可以解决这个问题的分面搜索,但是我还没有时间把它移植到2.9。

无论如何,当您使用排序运算符执行分页查询时,Lucene必须找到与查询匹配的所有文档,对它们进行排序,然后获取前N个结果,其中N是页面大小。我想构建在排序查询完成后也应用的东西,但是获取前N个唯一结果并返回它们。我正在考虑使用HashSet和一个索引字段来确定唯一性。我宁愿找到一种方法来扩展Lucene中的某些东西,而不是尝试在出于性能原因返回结果后执行此操作。

自定义过滤器似乎在应用主查询之前运行,并且自定义收集器在应用排序之前运行,除非您按Lucene的文档ID进行排序。那么解决这个问题的最佳方法是什么?正确的组件方向上的一个点将为您提供答案,一个示例实现将绝对能为您提供答案。提前致谢

1 个答案:

答案 0 :(得分:0)

我会在没有排序的情况下进行搜索,并且在自定义收集器中,会根据“唯一性”将结果收集在大小为N的排序列表中