Следует ли оптимизировать индекс после добавочных индексов в Lucene?

Мы выполняем полные переиндексации каждые 7 дней (т.е. создаем индекс с нуля) для нашего индекса Lucene и инкрементальных индексов каждые 2 часа или около того. Наш индекс содержит около 700 000 документов, а полный индекс занимает около 17 часов (что не является проблемой).

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

LuceneFAQ упоминает, что:

The IndexWriter class supports an optimize() method that compacts the index database and speeds up queries. You may want to use this method after performing a complete indexing of your document set or after incremental updates of the index. If your incremental update adds documents frequently, you want to perform the optimization only once in a while to avoid the extra overhead of the optimization.

... но это, похоже, не дает какого-либо определения для того, что "часто" средства. Оптимизация требует интенсивной работы процессора и ОЧЕНЬ интенсивного ввода-вывода, поэтому мы не будем этого делать, если с этим справимся. Сколько стоит выполнение запросов к неоптимизированному индексу (я думаю, особенно с точки зрения производительности запросов после полного переиндексации по сравнению с после 20 инкрементальных индексов, где, скажем, 50 000 документов изменились)? Должны ли мы оптимизировать после каждого инкрементного индекса или производительность не стоит?

Ответы на вопрос(3)

Ваш ответ на вопрос