1

我正在围绕 Zend 的 lucene 实现编写一个包装器,并希望添加一个函数,该函数rebuildIndex()从数据库中读取所有相关字段并在临时文件夹中重新创建索引文件。操作完成后,我想用新的文件夹替换原来的文件夹。如何在替换其内容时锁定原始 lucene 文件夹?我在Zend 的 API 文档中没有找到任何内容,但我在某处读到了锁定适用于 lucene 中的文件。我需要哪些文件夹/文件?

4

1 回答 1

3

Lucene 在内部使用锁定来维护索引的一致性,因此您不能在代码中使用它。我建议使用以下策略:

  1. 创建目录“indexes”,其中包含 2 个不同版本索引的目录,例如“index1”和“index2”以及指向应该用于搜索的索引的符号链接“current”。
  2. 更新索引时,您将文件放在非活动索引目录中,重新创建索引,完成后将“当前”设置为新索引的目录
  3. 等待 1 分钟,让对旧索引文件的搜索查询完成并从旧目录中删除文件。
于 2010-02-08T06:47:01.967 回答