我正在使用Hibernate全文搜索。我目前正在使用:
<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-search</artifactId>
<version>4.5.1.Final</version>
</dependency>
我可以搜索好了。我的问题是:我如何对结果进行分页?有没有什么方法可以先说50个结果,然后在接下来的50个结果请求下一页时拨打电话?
我想到的一种方法是简单地获取最大ID,然后从Max + 1位置开始下一次搜索,假设ID是以自动增量顺序生成的。但我认为必须有更优雅的方法。
答案 0 :(得分:7)
来自Hibernate search-query docs分页。
org.hibernate.Query fullTextQuery =
fullTextSession.createFullTextQuery( luceneQuery, Customer.class );
fullTextQuery.setFirstResult(15); //start from the 15th element
fullTextQuery.setMaxResults(10); //return 10 elements
答案 1 :(得分:0)
您可以将列表结果从列表转换为页面示例:如果您在列表用户中获得搜索。你可以像这样转换:
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());
答案 2 :(得分:0)
要与Pageagle分页
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, results.size());