gpt4 book ai didi

java - 文档获取添加/更新/删除时 Lucene 索引文件的更改?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:25:33 24 4
gpt4 key购买 nike

我正在研究最新版本的 Lucene 4.10.2,它以 Java 作为前端,以 Oracle 12c 作为数据库。

我已经为一个拥有 100 万行的用户表建立了索引。 (记住 LinkedIn 用户表)

谁能解释一下当我们添加文档/更新文档/删除文档时文件夹(文件索引所在的位置)到底发生了什么?

附加示例图像: Common Lucene Index folder

我试图了解放置所有索引文件的 Lucene 文件夹的文件结构。

这只是一对多关系结构(我们不登录就搜索),稍后我将转向多对多关系(连接,连接的连接,用户的 1:1 索引文件夹)。

让我知道我的方法是对还是错。

最佳答案

Lucene 索引由多个“段”组成。每个段只写一次,当您调用 commit() 时,或者当 commit() 被自动调用时(通过将 IndexWriter 设置为在 RAM 使用量达到给定阈值)。通常,当您搜索索引时,每个段都会按顺序搜索,然后将结果合并在一起。 Lucene 以这种方式工作的原因是因为修改段将是一个非常缓慢的过程。可以将段合并在一起以提高搜索性能。 [1]

在您的示例中,以 _0 开头的文件是第一段,以 _1 开头的文件是第二段。 .cfe.cfs 文件是“复合文件”,它们包含该段的所有索引文件(有点像 zip 文件)。查看file extensions and formats for the default codec了解更多信息。

所以你的三个操作是这样的:

添加:文档将始终添加到新段中。

删除:删除的文档实际上并没有从索引中删除。取而代之的是,设置了一个标志以指示该文档已被删除。未删除的文档称为“实时文档”。删除的文档仍然会通过文档频率字段影响评分,并且在合并片段之前不会更新。

更新:更新只是原子添加和删除。

[1] http://blog.trifork.com/2011/11/21/simon-says-optimize-is-bad-for-you/

关于java - 文档获取添加/更新/删除时 Lucene 索引文件的更改?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27147960/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com