繁体   English   中英

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

[英]Changes in Lucene Index files when document gets add/update/delete?

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

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

当我们添加文档/更新文档/删除文档时,任何人都可以解释我文件夹(文件被索引)的确切变化吗?

附加样本图像: 常见的Lucene Index文件夹

我正在尝试理解Lucene文件夹的文件结构,其中放置了所有索引文件。

这只是一对多的关系结构(我们搜索没有登录),稍后我会转到很多关系(连接,连接连接,用户的1:1索引文件夹)。

如果我的方法是正确/错误,请告诉我。

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

在您的示例中,以_0开头的文件是第一个段,以_1开头的文件是第二个段。 .cfe.cfs文件是“复合文件”,它们包含该段的所有索引文件(有点像zip文件)。 有关详细信息,请参阅默认编解码器文件扩展名和格式

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

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

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM