блокировка папки lucene - PullRequest
       5

блокировка папки lucene

1 голос
/ 28 января 2010

Я пишу оболочку для реализации Zend в lucene и хотел добавить функцию rebuildIndex(), которая считывает все соответствующие поля из базы данных и заново создает индексный файл во временной папке. Когда операция будет завершена, я хочу заменить исходную папку новой. Как заблокировать исходную папку lucene при замене ее содержимого? Я ничего не нашел в документации Zend API , но я где-то читал, что блокировка работает с файлами в lucene. Какие папки / файлы мне нужны?

1 Ответ

3 голосов
/ 08 февраля 2010

Lucene использует внутреннюю блокировку для поддержания согласованности индекса, поэтому вы не можете использовать ее в своем коде. Я бы предложил использовать следующую стратегию:

  1. Создать каталог 'indexes', который содержит каталоги для 2 разных версий индекса, например, 'index1' и 'index2' и символическая ссылка 'current' на индекс, который следует использовать для поиска.
  2. При обновлении индекса вы удаляете файлы в неактивном каталоге индекса, воссоздаете индекс, и когда это будет сделано, установите «текущий» в новый индексированный каталог
  3. Подождите 1 минуту, чтобы поисковые запросы к старым индексным файлам завершились, и удалите файлы из старого каталога.
...