gpt4 book ai didi

java - spring mvc Hibernate 搜索查询

转载 作者:行者123 更新时间:2023-11-29 04:20:01 25 4
gpt4 key购买 nike

我正在使用 spring,使用 hibernate、maven 和 mysql,我正在尝试为电影和 Actor 制作一个简单的网站。我想要的是一种搜索方法,您可以在其中键入一个词或部分词/名称,然后您会得到一些结果,这是我的查询:

@Transactional
public List<Movie> searchForMovie(String searchText) {
FullTextSession fullTextSession = Search.getFullTextSession(getSession());

QueryBuilder qb = fullTextSession.getSearchFactory().buildQueryBuilder().forEntity(Movie.class).get();
org.apache.lucene.search.Query query = qb.keyword().onFields("year", "title").matching(searchText)
.createQuery();

org.hibernate.Query hibQuery = fullTextSession.createFullTextQuery(query, Movie.class);

List<Movie> results = hibQuery.list();
return results;
}

如您所见,我使用的是“关键字”,这意味着您必须搜索整个单词/名称,而不仅仅是其中的一部分。例如,如果我想找到电影“饥饿游戏”,我必须输入“饥饿”或“游戏”,我想要的是只输入“饥饿”并且仍然可以得到结果。我似乎找不到可以执行此操作的查询,想法?

最佳答案

您可以为此使用 hibernate 通配符查询。

? - represents a single character
* - represents any character sequence.

另请注意,出于性能目的,建议查询不要以 ?或者 *.

   QueryBuilder qb = fullTextSession.getSearchFactory()
.buildQueryBuilder().forEntity(Movie.class).get();
org.apache.lucene.search.Query query = qb
.keyword().wildcard().onFields("year", "title")
.matching(searchText + "*")
.createQuery();

请参阅 hibernate 文档以获取完整引用。
5.1.2.3 通配符查询。
http://docs.jboss.org/hibernate/search/4.4/reference/en-US/html/search-query.html#search-query-querydsl

关于java - spring mvc Hibernate 搜索查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27159875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com