当我重新索引应用程序的数据库数据并且同时执行搜索时,运行搜索的线程将一直处于休眠状态,直到重新编制索引为止。我假设索引方法是线程安全的,以防止在索引时更改数据。在Lucene中是否有任何内置方式使其仅响应搜索(数据未被更改)?或者我应该开始自己考虑一些事情?我正在Tomcat服务器上运行我的应用程序。
谢谢,Tomer
答案 0 :(得分:1)
我认为你实际上是重建索引(或者从头开始重新索引所有内容,而不是重新索引单个文档)。在重建索引时,您无法对其执行查询,因为它不处于一致状态。
经常使用的最简单的解决方案是在后台重建索引(同时仍然对旧索引执行查询),然后将其替换为新索引。
如果您面临的问题与频繁的服务器崩溃有关,那么可能值得研究一些更系统化的方法,例如在Zoie中实现的方法 - 它记录后续的索引请求,所以它可以从索引的最后一个正确快照中恢复。