【问题标题】:Does Lucene.Net Sort and then filter, or filter and then sort?Lucene.Net 是先排序再过滤,还是先过滤再排序?
【发布时间】:2012-12-02 07:43:06
【问题描述】:

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

【问题讨论】:

    标签: sorting filtering lucene.net


    【解决方案1】:

    过滤然后排序。

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

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

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

    【讨论】:

      猜你喜欢
      • 2013-04-02
      • 1970-01-01
      • 2022-08-11
      • 1970-01-01
      • 1970-01-01
      • 2012-04-29
      • 1970-01-01
      • 1970-01-01
      • 2011-09-19
      相关资源
      最近更新 更多