您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

如何在JPA(Spring Data JPA)中实现简单的全文本搜索?

如何在JPA(Spring Data JPA)中实现简单的全文本搜索?

通过在每个持久存储上保存搜索字符串并更新到数据库解决此问题。首先为searchString创建一列:

   @Column(name = "SEARCH_STRING", length = 1000)
   private String searchString;

存储很便宜,DB上的开销并不大。

然后保存更新并继续:

   @PreUpdate
   @PrePersist
   void updateSearchString() {
      final String fullSearchString = StringUtils.join(Arrays.asList(
              login,
              firstName,
              lastName,
              email,
              Boolean.TRUE.equals(active) ? "tak" : "nie",
              profile.getDescription()),
              " ");
      this.searchString = StringUtils.substring(fullSearchString, 0, 999);
   }

然后我可以使用以下常规JPQL查询LIKE

SELECT u FROM User u WHERE u.searchString LIKE '%' || :text || '%'

或使用示例查询

  ExampleMatcher matcher = ExampleMatcher.matching().
          withMatcher("searchString", ExampleMatcher.GenericPropertyMatcher.of(ExampleMatcher.StringMatcher.CONTAINING).ignoreCase());
Java 2022/1/1 18:16:59 有515人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶