首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >赛弗搜索查询模糊查询

赛弗搜索查询模糊查询
EN

Stack Overflow用户
提问于 2015-04-08 04:11:03
回答 1查看 225关注 0票数 0

我想用密码搜索,

  1. 我有四部电影,福雷斯特,天空,sky1,sky2
  2. 我要搜索天空
  3. 我要它返回天空,sky1,sky2

我的密码是

代码语言:javascript
复制
@Query("MATCH (movie:Movie) WHERE movie.title =~ '.*{0}.*' RETURN movie")

代码语言:javascript
复制
@Query("MATCH (movie:Movie) WHERE movie.title =~ '(?i).*{0}.*' RETURN movie")

这两种方法都不起作用:它返回forrest、sky、sky1、sky2,不管我搜索什么(forrest或sky)。怎么啦?控制器

代码语言:javascript
复制
@RequestMapping(value = "/movies", method = RequestMethod.GET, headers = "Accept=text/html")
public String findMovies(Model model, @RequestParam("q") String query) {
    if (query != null && !query.isEmpty()) {

        List<Movie> movies = movieRepository.findByTitleLike("(?i).*sky.*");

        model.addAttribute("movies", IteratorUtil.asCollection(movies));

    } else {
        model.addAttribute("movies", Collections.emptyList());
    }
    model.addAttribute("query", query);

    return "movies/list";
}
EN

回答 1

Stack Overflow用户

发布于 2015-04-09 09:07:55

我最后一次执行正则表达式匹配是在以前版本的Neo4j中,当时您不能以这种方式使用参数来构造正则表达式。{0}不会被转换。相反,您应该将查询更改为:

代码语言:javascript
复制
@Query("MATCH (movie:Movie) WHERE movie.title =~ {0} RETURN movie")
List<Movie> findByTitleLike(String like)

用以下方式称呼它:

代码语言:javascript
复制
myMovieRepository.findByTitleLike("(?i).*sky.*")
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/29505787

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档