Я пишу обгортку навколо Zend's lucene реалізації та хотів додати функцію rebuildIndex()
який читає всі відповідні поля з бази данихі повторно створює файл індексу у тимчасовій папці. Коли операція закінчена, я хочу замінити оригінальну папку на нову. Як я можу заблокувати оригінальну папку lucene при заміні її вмісту? У мене нічого не знайдено Документи API API Zend, але я десь читав, що блокування роботи з файлами в люцене. Які папки / файли мені потрібні?
Відповіді:
3 для відповіді № 1Lucene використовує блокування внутрішньо, щоб підтримувати послідовність індексу, тому ви не можете використовувати його у своєму коді. Я пропоную використовувати таку стратегію:
- Створіть "indexes" каталогу, що містить каталоги для двох різних версій індексу, наприклад. "index1" і "index2" і символічне посилання "current" до індексу, який слід використовувати для пошуків.
- Під час оновлення індексу ви скидаєте файли в неактивному каталозі індексу, повторно створите індекс і, коли він зробив встановити "поточний", в щойно індексований каталог
- Зачекайте 1 хвилину для пошукових запитів до старих файлів індексів, щоб завершити та скинути файли зі старої директорії.