[英]Hibernate Full text Search Pagination
我正在使用 Hibernate 全文搜索。 我目前正在使用:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-search</artifactId>
<version>4.5.1.Final</version>
</dependency>
我可以搜索一切正常。 我的問題是:如何對結果進行分頁? 有什么辦法可以先說 50 個結果,然后在為接下來的 50 個結果請求下一頁時撥打電話?
我想到的一種方法是簡單地獲取最大 ID,然后從 Max+1 位置開始下一次搜索,假設 ID 是按自動增量順序生成的。 但我認為必須有更優雅的方法。
來自Hibernate search-query docs on pagination。
org.hibernate.Query fullTextQuery =
fullTextSession.createFullTextQuery( luceneQuery, Customer.class );
fullTextQuery.setFirstResult(15); //start from the 15th element
fullTextQuery.setMaxResults(10); //return 10 elements
您可以將列表結果從列表轉換為頁面示例:如果您在列表用戶中進行搜索。 你可以這樣轉換:
NBPAGE: pages number you want
Pageable page=new PageRequest(0,NBPAGE,Sort.Direction.DESC,"date");
Page<Annonce> PageList= new PageImpl<Annonce>(users ,page,users.size());
使用 Pageable 進行分頁
FullTextQuery fullTextQuery = getJpaQuery(bool.createQuery(), IconV2.class);
fullTextQuery.setFirstResult(pageable.getPageSize() * pageable.getPageNumber())
.setMaxResults(pageable.getPageSize());
List<IconV2> results = fullTextQuery.getResultList();
List<IconResourceV2> iconResult = results.stream()
.map(iconV2 -> new IconResourceV2.IconResourceV2Builder(iconV2).build())
.collect(Collectors.toList());
return new PageImpl<>(iconResult, pageable, fullTextQuery.getResultSize());
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.