Pregunta

Implementé Hibernate Search en mi aplicación, es decir, basado en Lucene. Cada vez que indexo la base de datos, aumenta el tamaño de los índices de lucene. Pero, el resultado de la consulta devuelve el mismo número de resultados cada vez.

¿Por qué el tamaño de lucene aumenta cada vez que indexo los mismos datos cada vez?

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();
¿Fue útil?

Solución

No sé nada sobre Hibernate, pero generalmente en Lucene, los documentos eliminados permanecen en el índice hasta que se optimiza. Eso podría explicar por qué está viendo que el índice solo crece.

Intente ejecutar optimizar () en el índice. No estoy seguro de cómo hacerlo desde Hibernate (veo que es un método en SearchFactory ).

Espero que esto ayude.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top