Почему размер индекса lucene увеличился, если я индексировал те же данные? - PullRequest
0 голосов
/ 20 июня 2009

Я реализовал Hibernate Search в своем приложении, т.е. на основе Lucene. Всякий раз, когда я индексирую базу данных, размер индексов lucene увеличивается. Но результат запроса каждый раз возвращает одно и то же количество результатов.

Почему размер люцена увеличивается каждый раз, когда я каждый раз индексирую одни и те же данные?

FullTextSession fullTextSession = Search.getFullTextSession(getSession());
    org.hibernate.Transaction tx = fullTextSession.beginTransaction();

    Criteria criteria = fullTextSession.createCriteria(getPersistentClass())
    .setResultTransformer(CriteriaSpecification.DISTINCT_ROOT_ENTITY)
    .setCacheMode(CacheMode.IGNORE)
    .setFetchSize(pageSize)
    .setFlushMode(FlushMode.MANUAL);


    int i = 0;
    List<ProdAttrAssociationVO> results = null;
    do {
      criteria = criteria.setFirstResult(i)
        .setMaxResults(pageSize);
      results = criteria.list();

      for (ProdAttrAssociationVO entity : results) {
        fullTextSession.delete(entity);
        fullTextSession.index(entity);
      }

      // flush the index changes to disk so we don't hold until a commit
      if (i % batchSize == 0) {
        fullTextSession.flushToIndexes();
        fullTextSession.clear();
      }

      i += pageSize;
    } while (results.size() > 0);


    System.out.println("ProdAttrAssociation Indexing Completed");
    tx.commit();

1 Ответ

6 голосов
/ 21 июня 2009

Я ничего не знаю о Hibernate, но обычно в Lucene удаленные документы остаются в индексе до его оптимизации. Это может объяснить, почему вы видите, что индекс только растет.

Попробуйте запустить optimize () для индекса. Не уверен, как вы делаете это из Hibernate (я вижу, это метод на SearchFactory ).

Надеюсь, это поможет.

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