Поиск не отвечает во время индексации с помощью Lucene - PullRequest
4 голосов
/ 13 июля 2011

Когда я переиндексирую данные БД своего приложения, и в это же время выполняется поиск, поток, который выполняет поиск, перейдет в спящий режим, пока не будет выполнена повторная индексация.Я предполагаю, что методы индексации являются поточно-ориентированными, чтобы предотвратить изменение данных при индексации.Есть ли в Lucene встроенный способ, позволяющий адаптировать его только для поиска (где данные не изменяются)?Или я должен начать думать о чем-то самостоятельно?Я запускаю свое приложение на сервере Tomcat.

Спасибо, Томер

1 Ответ

1 голос
/ 13 июля 2011

Я предполагаю, что вы на самом деле перестраиваете индекс (или переиндексируете все с нуля, а не переиндексируете отдельные документы). Пока индекс перестраивается, вы не можете выполнять запросы к нему, потому что он не находится в согласованном состоянии.

Самое простое решение, которое часто используется, - это перестроить индекс в фоновом режиме (при этом все еще выполняя запросы к старому), а затем заменить его на новый.

Если проблема, с которой вы сталкиваетесь, связана с частыми сбоями сервера, возможно, стоит взглянуть на более систематический подход, такой как тот, который реализован, например, в Zoie - он записывает последующие запросы на индексирование , поэтому он может восстановиться после последнего правильного снимка индекса.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...