我正在使用Hibernate Search来查找我的数据库中的人。
他们已将firstName和lastName字段编入索引。
我希望结果看起来像那样:
搜索:“Robe Pau”
匹配度:
不应匹配:
虽然搜索类似“Rob”
应匹配:
我的代码如下所示:
FullTextEntityManager fullTextEntityManager = Search.getFullTextEntityManager(entityManager);
Query query = fullTextEntityManager
.getSearchFactory()
.buildQueryBuilder()
.forEntity(Customer.class)
.overridesForField("firstName", "edgeNGram_query")
.overridesForField("lastName","edgeNGram_query")
.get()
.simpleQueryString()
.onFields("firstName","lastName")
.matching(text)
.createQuery();
我希望有人能够启发我。
答案 0 :(得分:1)
考虑到搜索很简单,因为您只匹配名字和姓氏,我会解析输入并在每个标记后添加*
(如果尚未存在)以触发通配符搜索
使用简单的查询字符串查询是您的最佳选择,因此您需要添加.withAndAsDefaultOperator()
,以便所有搜索到的字词都是必需的。