Я в процессе индексации огромного набора файлов журнала для приложения, над которым я работаю с использованием Lucene.net. Сейчас я анализирую свои файлы журналов для каждой записи (то есть запись может занимать несколько строк до следующей записи журнала) и добавляю каждую запись журнала в качестве документа в Lucene.
Каждый документ содержит запись в журнале (которая анализируется) и имеет некоторые другие поля (которые только что сохранены), такие как время строки журнала, номер строки журнала и из какого журнала он получен. Я также даю подсказку для каждого документа записи журнала, чтобы сопоставить последовательность записей журнала с исходным документом, и я могу изменить их порядок по номеру строки.
Хотя мне нравится гранулярность возможности поиска по каждой строке в моем индексе (и я могу перестроить исходный документ, используя указатель, назначенный каждому файлу журнала), мне любопытно, если этот вид индекса творение будет устойчивым. На самом деле, у меня уже есть что-то вроде 25 миллионов записей, которые представляют журналы всего за один год. Моя скорость поиска все еще довольно высока, я могу искать эти 25 миллионов записей примерно за секунду или две.
Лучше иметь меньше документов, но каждый документ больше? Это имеет значение? Буду ли я сталкиваться с узкими местами производительности с Lucene, когда у меня будет 50 миллионов записей? 100 миллионов? 500 миллионов? Если бы я индексировал только один файл журнала, у меня, вероятно, было бы на 3 порядка меньше документов, если бы я оценил, что каждый файл журнала имеет около 1000-20000 строк.