لماذا زاد حجم فهرس Lucene إذا فهرسة نفس البيانات؟
-
06-07-2019 - |
سؤال
لقد قمت بتطبيق 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).
أتمنى أن يساعدك هذا.
لا تنتمي إلى StackOverflow