Lucene.Net是排序然后过滤,过滤然后排序?

时间:2012-12-14 10:02:22

标签: sorting filtering lucene.net

我们正在使用Lucene.Net IndexSearch.Search方法。我们正在传递过滤器和排序,但我们看到了一些奇怪的行为。逻辑告诉我,出于性能原因,过滤将在排序之前完成,但是要确保。

1 个答案:

答案 0 :(得分:3)

过滤然后排序。

Lucene中的排序是通过将文档按顺序收集到队列中完成的。它保留了前X个文档,其中X是您要求的最大结果数。收藏家不会比较与FilterQuery不匹配的文件。

当您不指定排序时,分数用于将文档划分为队列的优先级,如果您使用排序,则使用您要求的排序的比较器。

如果您更好奇,请查看源代码中的不同Collector类,Collect()方法具有您想要的所有信息。