TermsQueryBuilder query = QueryBuilders.termsQuery("desc","游戏数据");
TermsQueryBuilder query = QueryBuilders.termsQuery("desc","游");
用第一种时无法查询出数据,第二种可以,分词器也设置了ik,为什么
TermsQueryBuilder query = QueryBuilders.termsQuery("desc","游");
用第一种时无法查询出数据,第二种可以,分词器也设置了ik,为什么
5 个回复
rochy - rochy_he
赞同来自:
游戏数据使用 ik 默认会被分词为:游戏/数据;
存储在 ES 里面是两个 Term:“游戏” “数据”
你在搜索的时候可以使用:QueryBuilders.termsQuery("desc","游戏", "数据");
现在你使用的是 QueryBuilders.termsQuery("desc","游戏数据"); QueryBuilders.termsQuery("desc","游");
“游戏数据” 这个 Term 以及 “游” 这个 Term 都不再分词结果里面,因此搜索不到
你的测试结果是搜索“游”可以查询到,因此怀疑你的 ik 没有配置好
如果配置成功,你可以尝试:QueryBuilders.termsQuery("desc","游戏", "数据");
qqq1234567
赞同来自:
27092-创新产品高级游戏内容运营(深圳)
27564-游戏商业分析
21090-游戏运营(深圳)
SD9-游戏后台开发
24012-游戏技术美术
27560-游戏策划(深圳)
23872-游戏研究岗
27560-游戏策划(深圳)
27564-体育游戏评测方向游戏策划(深圳)
23518-移动游戏渠道运营策划(精品游戏)
这么多的数据,
而用TermsQueryBuilder query = QueryBuilders.termsQuery("desc","游戏")只查到
27092-创新产品高级游戏内容运营(深圳)这样一条呢
rochy - rochy_he
赞同来自:
你可以把你这个 desc 字段的 mapping 设置贴出来看一下
qqq1234567
赞同来自:
qqq1234567
赞同来自: