模糊匹配 wildcardQuery 小问题

作者 menzhipeng | 发布于4 天前 | 阅读数:55

源数据中某字段值为  ‘刘彻’,
使用 wildcardQuery 方法,搜索关键词为 ‘刘彻’却搜不到 , 而如果是 ‘刘’ 或者 ‘彻’就可以。求解这是为什么?
 

QueryBuilder matchPhrase = QueryBuilders.wildcardQuery(‘author’,"*"+key+"*");
 
已邀请:

rochy - rochy_he@jointsky

赞同来自:

wildcardQuery 是 term 级别的 query
刘彻 应该经过你的分词器后,分词结果为:刘/彻
也就是说 Term(刘)、Term(彻)
所以你查询 刘彻 的时候,因为没有对应的 Term 包含“刘彻”,所以搜索不到
搜索 '刘’ 或者 ‘彻’就可以,是因为有对应的 term 包含搜索的内容

laoyang360 - [死磕Elasitcsearch]知识星球地址:http://t.cn/RmwM3N9;微信公众号:铭毅天下; 博客:blog.csdn.net/laoyang360

赞同来自:

1确认下你的mapping author字段的类型,
如果是text 结合keyword类型的话,
建议:wildcard匹配的时候:后面author改成 author.keyword

要回复问题请先登录注册