Создать индекс Lucene только с одним сегментом - PullRequest
0 голосов
/ 09 февраля 2019

Как я могу создать индекс Lucene, который будет иметь только один сегмент (без использования принудительного слияния) У меня более чем достаточно ОЗУ, поэтому я попытался использовать размер буфера 1,5 ГБ для меньшего индекса до 64-128 МБ, но все еще с 5-10 сегментов в конце индексации.Что я могу с этим поделать?

public static final double DEFAULT_RAM_BUFFER_SIZE_MB_STORE = 1536.;

...

final File file = new File(pathIndex);
final Path path = file.toPath();
final Directory index = ControlObjectsLuceneIndex.createDirectory(path, file);
final IndexWriterConfig indexWriterConfig = new IndexWriterConfig(analyzer);
indexWriterConfig.setRAMBufferSizeMB(defaultRamBufferSizeMb);
indexWriterConfig.setSimilarity(_ekspertSimilarity);
indexWriterConfig.setUseCompoundFile(false);
return new IndexWriter(index, indexWriterConfig);

1 Ответ

0 голосов
/ 09 февраля 2019

Сброс срабатывает, когда с момента последнего сброса достаточно документов.Сброс инициируется либо использованием документов в оперативной памяти (см. IndexWriterConfig.setRAMBufferSizeMB(double)), либо количеством добавленных документов (см. IndexWriterConfig.setMaxBufferedDocs(int)).

Это означает, что если вы хотите предотвратить сброс, вынеобходимо установить верхний предел для обоих этих значений, чтобы гарантировать, что как количество добавленных документов, так и использование ОЗУ будут меньше, чем ваши пределы.

Другой подход может состоять в том, чтобы передать IndexWriterConfig.DISABLE_AUTO_FLUSH в setMaxBufferedDocs или в setRAMBufferSizeMB для предотвращения сброса из-за количества буферизованных документов или использования оперативной памяти.Обратите внимание, что, однако, вы не можете установить оба значения равными DISABLE_AUTO_FLUSH, и, скорее всего, вы сможете определить количество документов проще, чем объем оперативной памяти

Кроме того, убедитесь, что вы используетеIndexWriter работает только в одном потоке (или правильно синхронизирован)

Источник: https://lucene.apache.org/core/7_6_0/core/org/apache/lucene/index/IndexWriter.html

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...