سؤال

لقد قمت بتطبيق Hibernate Search في طلبي IE استنادًا إلى 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();
هل كانت مفيدة؟

المحلول

لا أعرف أي شيء عن السبات ، ولكن عمومًا في لوسين ، تبقى المستندات المحذوفة على المؤشر حتى يتم تحسينها. قد يفسر ذلك سبب رؤية الفهرس ينمو فقط.

حاول تشغيل تحسين () على الفهرس. لست متأكدًا من كيفية قيامك بذلك من السبات (أرى أنها طريقة على SearchFactory).

أتمنى أن يساعدك هذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top