在lucene.net中排序

Bor*_*ens 8 sorting lucene

我得到了我的lucene索引,其中包含一个需要排序的字段.我有我的查询,我可以制作我的Sort对象.如果我从javadoc中理解,我应该能够进行query.SetSort().但似乎没有这样的方法......

当然,我错过了一些至关重要的东西.有什么建议?

eri*_*son 11

实际上有两点重要.首先,必须对该字段编制索引.其次,将Sort对象传递给重载search方法.

上次我看,文档并没有很好地指出索引部分,当然也没有解释为什么会这样.需要一些挖掘来找出原因.

当字段是可排序的时,搜索器会为索引中的每个文档创建一个包含一个元素的数组.它使用术语索引中的信息来填充此数组,以便它可以非常快速地执行排序.如果你有很多文档,它可能会占用大量内存,所以除非有需要,否则不要对字段进行排序.

还有一点需要注意:可排序字段必须在每个字段中存储不超过一个值.如果有多个值,Lucene不知道将哪个值用作排序键.