Можно ли зафиксировать изменения без перезаписи всего индекса с помощью Zend Search Lucene?

Мне было поручено реализовать функцию поиска на веб-сайте, содержащем примерно 300 динамических страниц. Я добился этого с помощью Zend Search Lucene (спасателя). Но теперь возникает проблема с переносом всего в производство. Веб-сайт размещен на общем сервере с максимальным временем выполнения 30 секунд, что составляет четверть времени, необходимого для запуска моего сценария индексирования.

Сценарий индексации разделен на следующий набор шагов: (1) создать все документы (2) добавить эти документы в индекс и, наконец, (3) зафиксировать. Насколько я понял, после фиксации индекс будет перезаписан новыми документами.

Итак, у меня следующий вопрос: можно ли зафиксировать индекс без перезаписи всего? Например, я хотел бы запустить 4 скрипта по отдельности, один за другим. Каждый сценарий выполняет один и тот же набор шагов, но только для определенного набора документов. Это позволит каждому сценарию оставаться в пределах 30-секундного времени выполнения. В конце концов, индекс будет содержать все документы.

Если это невозможно, каким будет альтернативное решение?


person Lynn Adrianna    schedule 23.08.2014    source источник


Ответы (1)


Да, вы можете обновлять (фактически удалять и повторно добавлять) отдельные документы в индексе Lucene. Вам понадобится уникальный постоянный идентификатор для каждого документа. После обновления вам нужно будет открыть новый IndexReader, чтобы получить обновленные документы.

person Mark Leighton Fisher    schedule 26.08.2014