Я пытался подходить к асинхронной инициализации нашего индекса Lucene.Объединенные индексы Lucene .NET не дают таких же результатов, как непосредственно записанный индекс
Одна из ведьм заключалась в том, чтобы индексировать наши данные небольшими партиями в отдельные индексы, а затем объединить их в более крупный индекс.
Проблема в том, что когда задача полностью выполнена, наш индекс, похоже, не дает того же результата.
Теперь многие конкретные запросы дадут такое же количество результатов, например. contentType: notification
A Весь селектор документов также дает те же результаты. (:)
Но если я делаю поиск подстановки, например. 'c *' индекс, который был построен из фрагментированных индексов, а затем объединил доходность 0 результатов, но тот, который был написан за один большой ход, может дать несколько сотен тысяч результатов (ведьма справедлива, так как c * - довольно широкий поиск) ...
Есть ли что-то, что нужно сделать для объединенных индексов или есть некоторые различия в их обработке? ... Я попытался запустить Оптимизацию на них, но не повезло.
Я думаю, все это зависит от сложности документов, если у вас есть достаточно простые документы с несколькими полями может быть очень отличается от очень сложных документов. Все, что я знаю, это то, что для регистрации всех наших документов требуется более 1 часа. Мы поняли, что здесь есть узкое место для хранения, так как один и тот же набор можно сделать за 7 минут на 250 КБ IOPS - 2 ГБ/с. Таким образом, это может не помочь создавать индексы в памяти и объединять их в диск, но об этом можно было бы узнать только, протестировав его. Нет смысла тестировать производительность, но если она не работает. – Jens
, если вы создаете индекс «навалом», а не непрерывные обновления, вы можете использовать SetRAMBufferSizeMB в IndexWriter для некоторого большого значения. Это приведет к буферизации документов в памяти перед тем, как погрузить на диск. Побочным эффектом является то, что сегменты намного больше, а слияние происходит гораздо реже. Я наблюдал улучшения порядка, поскольку количество дискового ввода-вывода резко сокращается. – AndyPook
Настройка буфера ОЗУ фактически помогла только до тех пор, пока мы не нажмем флеш. Как оказалось, хотя именно SAN вызвало большинство наших проблем, и для индексации ~ 250 тыс. Документов (около 750 млн. Полей, по оценкам, средний объем полей для каждого документа составляет около 10 минут) ... Первоначальный вопрос по-прежнему меня интересует с теоретической точки зрения, но почему подход слияния, похоже, дает другой результат, однако я не мог воспроизвести проблему для более простой и необработанной реализации, поэтому исходный, хотя и что это должно быть в наших упаковках) – Jens