我找到了一些教程,他们将索引文件存储到 BerkeleyDB,而不是将索引文件存储到目录中。为什么?它是否提高了搜索性能?
1 回答
书中提到的Lucene in Action, Second Edition确实在章节中提到了 Berkeley DB 9.2 Storing an index in Berkeley DB
。如前所述,它引入了事务支持。数据库提交将存储新更改的实体以及写入数据库的任何更改。实体和搜索索引将始终同步。
根据定义,它会比纯磁盘写入慢,因为在写入期间还有更多事情要做。阅读也是如此。以自定义格式存储数据会受到某种惩罚。但是,存储在“个人信息管理器”中的数据量可能不会那么大,并且可能不会注意到很小的损失(可能是后台加载?)或者被基于数据库的解决方案提供的事务支持所接受。
书中引述,第 292 页。
Chandler 项目 ( http://chandlerproject.org ) 是一个持续努力的构建开源个人信息管理器的项目。Chandler 旨在管理各种类型的信息,例如电子邮件、即时消息、约会、联系人、任务、笔记、网页、博客、书签、照片等等。它是一个可扩展的平台,而不仅仅是一个应用程序。搜索是 Chandler 基础架构的重要组成部分。
[...]
Chandler 的底层存储库以与传统关系数据库截然不同的方式使用 Oracle 的 Berkeley DB,其灵感来自资源描述框架 (RDF) 和关联数据库。Andi 创建了一个使用 Berkeley DB 作为底层存储机制的 Lucene 目录实现。在数据库中拥有 Lucene 索引的一个有趣的副作用是它提供的事务支持。Andi 将他的实现捐赠给了 Lucene 项目,它保存在 contrib 目录的 db/bdb 区域中。