Lucene пропускает похожие записи базы данных при массовой индексации - PullRequest
0 голосов
/ 28 февраля 2019

В 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, пожалуйста, помогите, в чем может быть проблема и как ее устранить.на лучшем уровне?

...