【问题标题】:Searching is not responsive during indexing with Lucene在使用 Lucene 建立索引期间搜索没有响应
【发布时间】:2011-07-13 16:47:18
【问题描述】:

当我重新索引我的应用程序的数据库数据,并且同时执行搜索时,运行搜索的线程将进入休眠状态,直到重新索引完成。我假设索引方法是线程安全的,以防止在索引时更改数据。 Lucene 中是否有任何内置方式使其仅响应搜索(数据未更改)?还是我应该开始自己思考一些事情?我在 Tomcat 服务器上运行我的应用程序。

谢谢,托默

【问题讨论】:

  • 同时写入和读取索引应该没有问题。读者只会看到提交的数据(除非您使用近乎实时的搜索)。你描述的应该有效。您能给我们提供遇到此问题的示例代码吗?

标签: java lucene indexing


【解决方案1】:

我假设您实际上是在重建索引(或从头开始重新索引所有内容,而不是重新索引单个文档)。在重建索引时,您无法对其执行查询,因为它的状态不一致。

通常使用的最简单的解决方案是在后台重建索引(同时仍对旧索引执行查询),然后用新索引替换它。

如果您面临的问题与频繁的服务器崩溃有关,则可能值得研究一些更系统的方法,例如在 Zoie 中实施的方法——它记录后续的索引请求,因此它可以从索引的最后一个正确快照恢复。

【讨论】:

  • Lucene 中是否有任何内置的“写入时复制”机制?
  • 我不知道 Lucene 本身有任何这样的机制。索引的管理被传递给应用程序或搜索服务器 (Solr/ES)。我认为例如Solr's multicores support 可以用于此。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-10-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多