Hibernate Search:为什么.getResultsize大于.list()。size()?

时间:2015-06-19 05:52:38

标签: hibernate hibernate-search

类似的问题被问到但没有解决。 这是我的代码

FullTextSession fullTextSession = Search.getFullTextSession(currentSession());
QueryBuilder qb = fullTextSession.getSearchFactory()
          .buildQueryBuilder().forEntity(Design.class).get();
org.apache.lucene.search.Query query = qb
          .keyword()
          .onFields("designName", "description")
          .matching(text)
          .createQuery();
org.hibernate.search.FullTextQuery hibQuery =
        fullTextSession.createFullTextQuery(query, Design.class);
hibQuery.setFirstResult(start);
hibQuery.setMaxResults(num);

@SuppressWarnings("unchecked")
List<Design> designList = hibQuery.list();
for (Design design : designList) {
     Hibernate.initialize(design.getDesignImages());
}
return designList;

为什么hibQuery.list()。size()小于hibQuery.getResultSize()。由于这种差异,.setMaxResults()无法正常工作。

1 个答案:

答案 0 :(得分:0)

原因可能是索引和数据库在查询时不同步。 getResultSize基于Lucene查询结果大小,而list.size()是物化(加载)实体的实际大小。