使用Zend Search Lucene,可以在不覆盖整个索引的情况下提交更改吗?


Using Zend Search Lucene, is it possible to commit changes without overwriting the entire index?

我的任务是在一个包含大约300个动态页面的网站上实现搜索功能。使用Zend Search Lucene(一个救星),我已经完成了这一点。但现在出现了一个问题,即如何将所有内容都投入生产。该网站托管在共享服务器上,最大执行时间为30秒,这是运行我的索引脚本所需时间的四分之一。

索引脚本分为以下步骤:(1)创建所有文档(2)将这些文档添加到索引中,最后(3)提交。据我所知,一旦提交,索引将被新文档覆盖。

所以,我的问题是:是否有可能在不覆盖的情况下提交索引 ?例如,我想分别运行4个脚本一个接一个。每个脚本将执行相同的一组步骤,但仅针对特定的文档集。这将允许每个脚本保持在30秒的执行时间内。最后,索引将包含所有文档。

如果这是不可能的,有什么替代的解决方案?

是的,你可以更新(实际上是删除&在Lucene索引中重新添加单个文档。每个文档都需要一个惟一的永久ID。更新后,您需要打开一个新的IndexReader来获取更新的文档。