【问题标题】:How to perform Postgesql full-text search with Spring Boot & Spring Data JPA如何使用 Spring Boot 和 Spring Data JPA 执行 Postgesql 全文搜索
【发布时间】:2021-02-26 01:15:22
【问题描述】:

我阅读了 Spring Data JPA 并发现要编写自定义查询,我们可以使用 Criteria API,但这个 API 似乎没有全文搜索。有谁能帮我在 Spring Boot 项目中实现这个?

【问题讨论】:

    标签: java spring-boot spring-data-jpa


    【解决方案1】:

    您可以使用规范 API 来做到这一点。

    1. 创建规范。
    @Component
    public class PostSpecification {
    
        public static Specification<Post> search(String keyword) {
            return ((root, criteriaQuery, criteriaBuilder) -> {
                criteriaQuery.distinct(true);
                if (keyword == null) {
                    return null;
                }
                return criteriaBuilder.or(
                        criteriaBuilder.like(root.get("title"), "%" + keyword + "%"),
                        criteriaBuilder.like(root.get("content"), "%" + keyword + "%"),
                        criteriaBuilder.like(root.get("excerpt"), "%" + keyword + "%"),
                        criteriaBuilder.equal(root.join("author").get("name"), keyword),
                        criteriaBuilder.equal(root.join("tags").get("name"), keyword.trim().toUpperCase())
                );
            });
        }
    
    }
    
    1. 创建存储库
    @Repository
    public interface PostRepository extends JpaRepository<Post, Long>, JpaSpecificationExecutor<Post> {
    }
    

    下面的方法将返回包含关键字的List&lt;Post&gt;

    postRepository.findAll(PostSpecification.search(keyword));
    

    将在指定列中搜索关键字。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-12-24
      • 1970-01-01
      • 2020-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-29
      • 2016-06-22
      • 2017-07-09
      相关资源
      最近更新 更多