如何解决如果在 Lucene 8.6.1 中未操作索引,docids 是否不变?
假设我每天在同一时间每天更新一次索引。在更新间隔期间(21 小时左右),docid 会保持不变吗?
解决方法
正如@andrewjames 所提到的,docId 仅在合并发生时发生变化。 docsId 基本上是文档在特定段中的数组索引位置。
这样做的副作用还在于,如果您有多个段,那么给定的 docId 可能会分配给多个文档,一个在一个段中,一个在另一个段中,等等。如果这是一个问题,您可以强制执行完成索引构建后合并,以便只有一个段。那么此时不会有两个文档具有相同的 docId。
如果没有发生合并,给定文档的 docId 不会改变。除非您调用强制合并或添加或删除文档,或者升级您的索引,否则不会发生合并。
所以...如果您构建索引,并且不添加文档、删除文档或调用强制合并或升级索引,则 docIds 将是稳定的。但是下次构建索引时,给定的文档可能会收到完全不同的文档 ID。正如@andrewjames 所说,docId 分配和分配时间是 Lucene 的内部事务,因此即使您知道当前分配的时间和方式,您也应该谨慎依赖它们。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。