Можете ли вы прочитать индекс lucene при обновлении индекса

Я не могу найти прямой ответ или нет! Я знаю, что могу отправлять несколько чтений параллельно, но могу ли я запросить индекс, когда отдельный процесс/поток обновляет его?

2 ответа

Прошло некоторое время с тех пор, как я использовал Луцен. Однако, предполагая, что вы говорите о версии Java, FAQ говорит следующее:

Позволяет ли Lucene одновременно выполнять поиск и индексирование?

Да. Тем не менее, IndexReader выполняет поиск только по индексу как "момент времени", который был открыт. Любые обновления индекса, добавленные или удаленные документы, не будут отображаться до тех пор, пока IndexReader не будет снова открыт. Поэтому ваше приложение должно периодически повторно открывать свои IndexReaders для просмотра последних обновлений. Метод IndexReader.isCurrent() позволяет проверить, происходили ли какие-либо обновления в индексе с момента открытия IndexReader.


См. также функцию Lucene, близкую к реальному времени, которая дает быстрый отклик на изменения (добавляет, удаляет, обновляет), чтобы индекс мог выполнять поиск этих изменений. Например, используя почти в реальном времени вы можете вносить изменения в индекс, а затем снова открывать считыватель каждые несколько секунд.

licensed under cc by-sa 3.0 with attribution.