В Project Deploy Lucene создает индексы таблицы базы данных, и для проекта используется следующий код, который индексирует сотни тысяч записей:
public void startIndexing(int threadsToLoadObjects, int threadsForSubsequentFetch, int fetchSize, Class<?>[] types) {
FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(eManager);
long startTime = System.currentTimeMillis();
try {
log.info("Index Building Started..");
if (ArrayUtils.isEmpty(types)) {
log.info("Indexing all entities");
fullTextEntityManager
.createIndexer().batchSizeToLoadObjects(501)
.threadsToLoadObjects(threadsToLoadObjects)
.threadsForSubsequentFetching(threadsForSubsequentFetch)
.progressMonitor(new SimpleIndexingProgressMonitor(5001))
.idFetchSize(fetchSize)
.cacheMode(CacheMode.IGNORE).startAndWait();
} else {
log.info("Indexing particular entities.");
for (Class<?> type : types) {
log.info("Indexing " + type.getCanonicalName());
fullTextEntityManager
.createIndexer(type).batchSizeToLoadObjects(501)
.threadsToLoadObjects(threadsToLoadObjects)
.threadsForSubsequentFetching(threadsForSubsequentFetch)
.progressMonitor(new SimpleIndexingProgressMonitor(5001))
.idFetchSize(fetchSize)
.cacheMode(CacheMode.IGNORE).startAndWait();
fullTextEntityManager.flushToIndexes();
}
}
long completionTime = System.currentTimeMillis() - startTime;
log.info("Completed. (Time " + completionTime + "ms)");
} catch (Exception e) {
log.error("Exception while rebuilding indexes", e);
}
}
Для похожих 15 строк;Lucene создает индекс только для пяти строк и пропускает все 10 строк.((Разница заключается в том, что в одном ряду значение интергера равно 1, а в другом - 2 или в одном ряду строка - «Khap», а в другом ряду - «Mosh» (имена).))
Послепереиндексации;иногда он добавляет больше строк для индексации, скажем, 7 строк, а иногда даже сохраняет 2 строки в индексации. (проверено в Lukeall)
Поскольку мало кто может узнать о lucene, пожалуйста, помогите, в чем может быть проблема и как ее устранить.на лучшем уровне?