Spring Boot 搜索无法正常工作

Posted

技术标签:

【中文标题】Spring Boot 搜索无法正常工作【英文标题】:Spring Boot search is not working properly 【发布时间】:2021-11-10 16:53:22 【问题描述】:

这里我想通过hotel name检索Hotels,但它只返回包含我包含的第一个字母的Hotels。

我将酒店名称搜索为“Sigiriya”,但当我输入“s”时,结果是 Sigiriya。但是当我开始输入更多(“igiriya”)时,结果消失了。

/**
     *
     * @param searchkey
     * @return - List of hotels
     */
    public List<Hotel> searchHotelByName( String searchkey)
        searchkey = searchkey.toLowerCase();
        searchkey = "%" + searchkey + "%";

        return hotelRepository.findAllByHotelNameContentLike( searchkey );
    

【问题讨论】:

您使用的是哪个数据库?请将标签添加到您的问题中。酒店名称和搜索词是什么? 我加了,mysql 【参考方案1】:

使用containsJPA keyword

public List<Hotel> searchHotelByName( String searchkey)
    return hotelRepository.findAllByHotelName IgnoreCaseContaining( searchkey );

contains 负责 % 等。

【讨论】:

【参考方案2】:

我认为原因是即使您将搜索键转换为小写,但您的数据库包含大写字母。因此使用ignore case search

/**
     *
     * @param searchkey
     * @return - List of hotels
     */
    public List<Hotel> searchHotelByName( String searchkey)
        searchkey = searchkey.toLowerCase();

        return hotelRepository.findAllByHotelNameIgnoreCaseContaining( searchkey );
    

【讨论】:

以上是关于Spring Boot 搜索无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot存储库在测试期间无法正常工作

Spring Boot + Spring Data JPA + 事务无法正常工作

Spring Security,Boot:安全规则无法正常工作

基于 Spring Boot / Spring Security 角色的授权无法正常工作 [重复]

Spring-boot REST 安全配置角色无法正常工作

带有 Spring Boot 2.0 @ConfigurationProperties 的 Kotlin 无法正常工作