如何在hibernate全文搜索中获得总计数?

Tom*_*Tom 2 spring full-text-search hibernate hibernate-search

我正在尝试通过以下链接使用hibernate全文: hibernate/search/4.1/reference/en-US/html/getting-started

基本上,它可以工作,但我想知道如何在执行全文查询时获得总计数,然后我可以告诉用户在这样的查询中将有多少结果和多少页面.

这是代码(使用JPA创建和执行搜索):

EntityManager em = entityManagerFactory.createEntityManager();
FullTextEntityManager fullTextEntityManager = 
org.hibernate.search.jpa.Search.getFullTextEntityManager(em);
em.getTransaction().begin();

// create native Lucene query unsing the query DSL
// alternatively you can write the Lucene query using the Lucene query parser
// or the Lucene programmatic API. The Hibernate Search DSL is recommended though
QueryBuilder qb = fullTextEntityManager.getSearchFactory()
    .buildQueryBuilder().forEntity( Book.class ).get();
org.apache.lucene.search.Query query = qb
  .keyword()
  .onFields("title", "subtitle", "authors.name", "publicationDate")
  .matching("Java rocks!")
  .createQuery();

// wrap Lucene query in a javax.persistence.Query
javax.persistence.Query persistenceQuery = 
    fullTextEntityManager.createFullTextQuery(query, Book.class);
 persistenceQuery.setFirstResult((page - 1) * PAGECOUNT);
    persistenceQuery.setMaxResults(PAGECOUNT);
// execute search
List result = persistenceQuery.getResultList();

em.getTransaction().commit();
em.close();
Run Code Online (Sandbox Code Playgroud)

在SQL中,我可以使用select count(*) from something,但在这里我不知道如何做到这一点.我想每次只获取一页数据,并使用另一个API来获取总数.

小智 11

query.getResultSize(); //return the total number of matching ... regardless of pagination
Run Code Online (Sandbox Code Playgroud)