Забыл закрыть Lucene IndexWriter после добавления Документов в индекс - PullRequest
4 голосов
/ 21 марта 2011

У меня была программа, работавшая в течение 2 дней, чтобы построить индекс Lucene для примерно 160 миллионов текстовых файлов, и после завершения программы я попытался выполнить поиск по индексу и обнаружил, что индекс построен неправильно, indexReader.numDocs () вернул 0 Я проверил каталог индекса, он выглядел хорошо, все данные индекса, казалось, были там, размер каталога 1,5 гигабайта.

Я проверил свой код и обнаружил, что забыл вызвать indexWriter.optimize () и indexWriter.close (), я хочу знать, возможно ли повторно оптимизировать () индекс, чтобы мне не нужно было перестраивать весь индекс с нуля? Я не хочу, чтобы программа заняла еще 2 дня.

1 Ответ

3 голосов
/ 21 марта 2011

Вызов IndexWriter.optimize() не является необходимым и может быть вызван позднее, открыв индекс.Он просто оптимизирует документы в индексе для лучшей производительности чтения и никак не повлияет на что-либо.

Однако, если вы забыли вызвать IndexWriter.close(), тогда ваш индекс может быть неполным.Поскольку вы обработали так много документов, вероятно, большинство из них было сброшено, так что, надеюсь, вам нужно только переиндексировать последние.Используйте Luke в соответствии с предложением для пользовательского интерфейса, чтобы быстро просмотреть индекс, чтобы увидеть, в каком состоянии он находится.

...