gpt4 book ai didi

java - 为什么 Lucene 会锁定整个目录?为什么不只锁定单个 lucene 文件?

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:06:15 54 4
gpt4 key购买 nike

我正在编写一个自定义的 lucenene Directory 实现,并且想知道为什么 IndexWriter 锁定整个 Directory 实例而不是逐个文件锁定。

我还不太熟悉 Lucene 的内部结构,但根据我目前所读到的内容,我正在考虑将锁定限制为每个“luce 索引文件类型”的每个实例,以支持多个索引器的并发索引

我敢肯定,如果这很简单,那么现在很多其他人已经做到了;所以想知道为什么不这样做,为什么整个目录都被锁定了......

有人可以解释这样做的原因,以及为什么不按照我的建议去做吗?

谢谢,桑巴

最佳答案

我想你对Lucene file format的理解过于简单化了。

不仅 Lucene 不像您建议的那样每个术语都使用一个文件,而且它还存储了许多其他重要信息 - 术语 vector 、频率、指针等。此外,它必须存储已删除的文件并执行合并(这是在幕后发生的!)——我可以向你保证整体的复杂性非常高。最重要的是,Lucene 提供了 transactional support and implements all ACID properties .拥有多个并发编写器,这一切都不可能轻易实现(甚至根本不可能)。换句话说,Lucene 面向 CA in CAP。 .

好处是从版本 4 开始,您可以 plug your own format ,所以请随意尝试并提出更好的替代方案。

关于java - 为什么 Lucene 会锁定整个目录?为什么不只锁定单个 lucene 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21112065/

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