/ / Зафіксувати папку lucene - php, lucene, zend-search-lucene

блокування папки lucene - php, lucene, zend-search-lucene

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

Відповіді:

3 для відповіді № 1

Lucene використовує блокування внутрішньо, щоб підтримувати послідовність індексу, тому ви не можете використовувати його у своєму коді. Я пропоную використовувати таку стратегію:

  1. Створіть "indexes" каталогу, що містить каталоги для двох різних версій індексу, наприклад. "index1" і "index2" і символічне посилання "current" до індексу, який слід використовувати для пошуків.
  2. Під час оновлення індексу ви скидаєте файли в неактивному каталозі індексу, повторно створите індекс і, коли він зробив встановити "поточний", в щойно індексований каталог
  3. Зачекайте 1 хвилину для пошукових запитів до старих файлів індексів, щоб завершити та скинути файли зі старої директорії.