Sorting lucene记录提交次数后的订单更改

Sorting lucene记录提交次数后的订单更改,sorting,indexing,lucene,Sorting,Indexing,Lucene,在从索引中搜索时,我遇到了lucene文档排序的问题。我需要按照后进快出的顺序获取文档,从最后一个索引文档到第一个索引文档。我可以看到秩序一直维持到九次提交索引。但从第10次提交到第10次提交的顺序有所改变。请注意,所有文档id号都已更改,插入顺序未维护,旧文档编号都已重新编号为不同的编号 即使在多次提交到索引之后,仍能保持插入顺序的任何解决方案 直到nine提交文件结构-未发现订单问题: 在第十次提交之后,结构发生了变化,文档的顺序也发生了变化 切勿将docId用作订购参考。这是lucene

在从索引中搜索时,我遇到了lucene文档排序的问题。我需要按照后进快出的顺序获取文档,从最后一个索引文档到第一个索引文档。我可以看到秩序一直维持到九次提交索引。但从第10次提交到第10次提交的顺序有所改变。请注意,所有文档id号都已更改,插入顺序未维护,旧文档编号都已重新编号为不同的编号

即使在多次提交到索引之后,仍能保持插入顺序的任何解决方案

直到nine提交文件结构-未发现订单问题:

在第十次提交之后,结构发生了变化,文档的顺序也发生了变化


切勿将docId用作订购参考。这是lucene内部id,可能会根据lucene的索引操作而改变

例如:如果您使用docId 1更新文档,lucene会在内部执行删除和插入操作。这可能导致另一个docId

要通过查询输入实现排序/排序,您应该在索引中添加一个专用字段。看见有几个字段用于此目的:

  • SortedDocValuesField:byte[]按列索引,用于排序/刻面
  • SortedSetDocValues字段:按列索引的SortedSet 分类/刻面
  • NumericDocValuesField:用于排序/刻面的长索引列
  • SortedNumericDocValues字段:按列索引的SortedSet 分类/刻面

重要提示:此字段仅用于评分/排序/刻面。如果您希望在查询结果中也包含此值,则必须为此值添加一个附加的StoredField。

那么您是按docid对查询结果排序的吗?实际上,我们在查询时不使用排序。我认为它保持了插入的顺序。不,它没有,我将在我的回答中添加一个示例。非常感谢您的评论。有道理。我会检查并让您知道任何澄清。尝试使用单独的独立代码,它起了作用。要将其合并到主应用程序中,还需要其他更改和依赖项。所以检查这些变化。非常感谢您的支持和指导。好的。您是否可以标记为anwered或仅为其他具有相同问题的人添加其他答案;)