如何使用HitCollector按字段值对Lucene结果进行排序?

Ed.*_*Ed. 16 lucene search

我正在使用以下代码在Lucene.Net中执行查询

var collector = new GroupingHitCollector(searcher.GetIndexReader());
searcher.Search(myQuery, collector);
resultsCount = collector.Hits.Count;
Run Code Online (Sandbox Code Playgroud)

如何根据字段对这些搜索结果进行排序?


更新

谢谢你的回答.我曾尝试过使用TopFieldDocCollector但是"value is too small or too large"当我5000作为numHits参数值传递时,我得到了一个错误说法.请建议通过有效值.

Jam*_*ady 25

该search.Searcher.search方法将接受一个search.Sort参数,该参数可以简单地构造为:

new Sort("my_sort_field")
Run Code Online (Sandbox Code Playgroud)

但是,对哪些字段可以进行排序存在一些限制 - 它们需要被索引但不能被标记化,并且值可以转换为Strings,Floats或Integers.

Lucene in Action涵盖了所有细节,以及按多个字段排序等.

  • 一个关键点:要排序的字段必须编入索引. (8认同)
  • ...而不是标记化 - 打败我:) (7认同)