Я пытаюсь использовать спящий полный текст, перейдя по этой ссылке:
спящий режим / поиск / 4,1 / ссылки / EN-US / html / получение стартером
По сути, это работает, но я хочу знать, как получить общее количество, пока я выполняю полнотекстовый запрос, затем я могу сообщить пользователю, сколько результатов и сколько страниц будет в таком запросе.
Вот код (Использование 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();
В SQL я могу использовать select count(*) from something
, но здесь я не знаю, как это сделать. Я хочу просто получать одну страницу данных каждый раз и использовать другой API для получения общего количества.