lucene文件在提交次数后更改订单

时间:2018-05-25 07:21:21

标签: sorting indexing lucene

在从索引搜索时,我在排序lucene文档时遇到问题。我需要以最后一个快速输出的顺序获取文档,从最后一个索引到第一个索引文档。我可以看到订单一直保持到九个提交到索引。但是该命令从病房的第10次提交改变了。注意到所有文档ID号都被更改并且未保留插入顺序,旧文档编号全部重新编号为不同的编号。

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

直到九次提交文件结构看起来 - 没有找到订单问题:

enter image description here

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

enter image description here

1 个答案:

答案 0 :(得分:0)

永远不要使用docId作为订购参考。这是一个lucene内部id,可能会根据lucene的索引操作而改变。

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

要通过查询输入实现排序/排序,您应该为索引添加专用字段。见Field Javadoc。为此目的有几个领域:

  • SortedDocValuesField:byte []按列索引进行排序/分面
  • SortedSetDocValuesField:SortedSet逐列索引 分拣/刻面
  • NumericDocValuesField:用于排序/分面的长列索引
  • SortedNumericDocValuesField:SortedSet逐列索引 分拣/刻面

重要提示:此字段仅用于评分/排序/分面。如果您还想在查询结果中使用此值,则必须为此值添加其他StoredField。