Sha*_*shi 0 lucene indexing search hibernate hibernate-search
我在我的应用程序中实现了Hibernate Search,即基于Lucene.每当我对数据库编制索引时,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();
Run Code Online (Sandbox Code Playgroud)
我对Hibernate一无所知,但一般在Lucene中,删除的文档会保留在索引上,直到它被优化.这可以解释为什么你看到指数只会增长.
尝试在索引上运行optimize().不知道你是如何从Hibernate中做到的(我看到它是SearchFactory上的一个方法).
希望这可以帮助.
| 归档时间: |
|
| 查看次数: |
819 次 |
| 最近记录: |