Hibernate搜索查询名字和姓氏
我正在使用Hibernate搜索查找数据库中的人员 它们为firstName和lastName字段编制了索引 我想要看起来有点像这样的结果: 搜索:“罗伯·保罗” 匹配:Hibernate搜索查询名字和姓氏,hibernate,hibernate-search,Hibernate,Hibernate Search,我正在使用Hibernate搜索查找数据库中的人员 它们为firstName和lastName字段编制了索引 我想要看起来有点像这样的结果: 搜索:“罗伯·保罗” 匹配: 罗伯特·保尔森 保罗·罗伯逊 不应匹配: 罗伯特罗伯逊 罗伯特·亨德里克斯 安娜·保尔森 而像“Rob”这样的搜索 应匹配: 罗伯特·保尔森 保罗·罗伯茨 罗伯茨 我的代码如下所示: FullTextEntityManager fullTextEntityManager = Search.getFullTe
- 罗伯特·保尔森
- 保罗·罗伯逊
- 罗伯特罗伯逊
- 罗伯特·亨德里克斯
- 安娜·保尔森
- 罗伯特·保尔森
- 保罗·罗伯茨
- 罗伯茨
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();
我希望有人能给我一些启发。考虑到搜索将很简单,因为您只匹配名字和姓氏,我将解析输入,并在每个标记(如果尚未存在)后添加一个
*
,以触发通配符搜索
使用简单的查询字符串查询是一种方法,这样您就走上了正确的道路,但您需要添加一个.withAndAsDefaultOperator()
,以便所有搜索的单词都是必需的