当前位置: 首页 > 知识库问答 >
问题:

如何使Spring搜索在名字中寻找一个词而不是全名?

郎正初
2023-03-14

写了一个Spring网站的搜索。搜索通过标题搜索一篇文章,但它只搜索确切的标题,我需要它找到它即使有一个词在搜索中输入在文章的标题。比如我有一篇文章“地球为什么是圆的”,现在你输入“地球为什么是圆的”,他就会找到这篇文章。在搜索,但如果你只是输入“为什么”这个词,他不会找到任何东西。请告诉我如何才能做到标题中的单词所能找到的东西。

public interface PostRepository extends JpaRepository<Post, Long> {
 Iterable<Post> findByTitle(String title) throws Exception;
}

我的服务是为这个存储库编写的(顺便告诉我,我把它抽象化是为了在其中只实现findByTitle?)

@Service
public abstract class PostService implements PostRepository {

public PostRepository postRepository;

@Override
public Iterable<Post> findByTitle(String title) throws Exception {
    Iterable<Post> searchResult = postRepository.findByTitle(title);
    if(searchResult != null){
        throw new Exception("Пост не найден");
    }

    return searchResult;
}
}

我的控制器

@Controller
public class SearchController {

@Autowired
PostRepository postRepository;

@GetMapping("/search")
public String searchPage(){
    return "/search";
}

@PostMapping("search")
public String searchPage(@RequestParam("searchString") String searchString, Model model){
    if(searchString != null){
        try {
            Iterable<Post> searchResult = postRepository.findByTitle(searchString);
            model.addAttribute("searchResult", searchResult);
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
    return "search";
}
}

共有1个答案

白吕恭
2023-03-14

如果您有一个值为“AAABBBCCC”的记录,并且您希望在搜索bc时返回该记录,那么您需要使用contining。

contina将搜索字符串包装在%%中,结果为类似于%bc%

此外,u还可以使用IgnoreCase来-yes-忽略大小写;)

postrepository.findByTitleContainingIgnoreCase(searchString);

编辑:有关更多详细信息,将搜索字符串包装在“%SearchString%”中意味着:忽略搜索字符串前面和后面的所有内容,以便搜索字符串可以位于字符串中的某个位置。

 类似资料:
  • 问题内容: 我第一次使用Postgresql,并且试图在我的网站中创建一个搜索引擎。我有这张桌子: 然后我为表的每个字段创建了一个索引(这是正确的方法吗?或者我可以为所有字段创建一个索引?): 现在,如果我想在每个索引中搜索一个单词,SQL查询是什么? 我尝试了这个,它的工作原理: 是否存在更好的方法来做到这一点?我可以搜索多个吗?我的一个朋友提出了一个解决方案,但这是针对MySQL数据库的: P

  • 问题内容: 我有一个,并且效果很好,直到我在输入中添加了一个空格。例如,如果我列出了许多历史事件(英国战役(1940年),大爆炸战役(1944年),[插入大量战斗],拿破仑的致命游行(1812年),[插入许多其他历史事件]) 。 当我输入“ ”或“ ”时,我会得到所有战斗的列表(尽管似乎有最大战斗),而当我输入“ ”时,结果会出现。 但是,当我输入时,该列表为空,与输入时我没有得到任何匹配的原因相

  • 使用指南 - 数据报告 - 优化分析 - 什么是搜索词排名 您可以在此设置需要跟踪的搜索词,搜索词报告会根据您设置的搜索词,给出其在百度搜索中和百度指数中的排名,并会提供PV、UV、跳出率、平均访问时长等信息,帮助您更好的优化推广效果。 1、设置搜索词 2、查看排名

  • 我正在用java编写一个程序,在一个.txt文件中搜索单词列表(事务编号)。txt文件可以有任意行数。 有没有办法处理这种情况?

  • 我试图创建一个java程序,它可以读取一个名为file1.txt的文件,存储它的字符串,并将这些字符串搜索到另一个名为file2.txt的文件,如果没有找到匹配,则从file1.txt打印特定的字符串。 现在我可以从file1.txt获得数据,但无法搜索file1的数据,例如在file2.txt中搜索单词“home” 请看这里的file1.txt包含Homee,而file2.txt有Home,所以

  • 问题内容: 我是spring-security(Java)的新手,我正在寻找以下示例的简单示例: 如何使用Spring Security进行登录和注销 确保会话存在于每个页面上,如果没有,则再次重定向到登录名 如何获得对当前用户会话的访问权限 我的项目目前正在使用Spring MVC,并处于hibernate状态。 我已经构建了loginAPI + loginDAO,现在我需要结合安全性并确保某些