簡體   English   中英

Hibernate全文搜索分頁

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM