为了账号安全,请及时绑定邮箱和手机立即绑定

“80%” 这样带百分号的字符串,只能搜出80,%不能搜出来。请问这是elasticsearch的bug吗?

“80%” 这样带百分号的字符串,只能搜出80,%不能搜出来。请问这是elasticsearch的bug吗?

正在回答

1 回答

目前ElasticSearch的分词器都是不支持对 '%' 进行分词的,比如你输入"I like wali 100%",它会分词为"I" "like" "wali" "100",但是%是不会被分词的,所以这不能算是个bug,这是当前分词器不支持该字符分词的原因造成的。具体分词相关的知识点,后续的课程会为大家进行更加详细的介绍^_^,祝亲学习愉快!

1 回复 有任何疑惑可以回复我~
#1

琴代语兮 提问者

老师您好,我们公司项目组最近正好要用ES做一个需求,正好您就开课了,很开心!就是项目里面有一个需求,经常要查询80%,75%这样的字符串,但%号又匹配不了,转义也没用,请问这个问题该怎么解决呢?
2017-09-14 回复 有任何疑惑可以回复我~
#2

瓦力老师 回复 琴代语兮 提问者

这位同学问的问题果然很实在~这里呢,我想跟你明确一下哈,分词这条路目前肯定是走不了了,我另外提供个思路供你参考^_^。可以先在自己的代码里把带%的关键词抠出来,然后在ES中建一个keyword类型的字段,专门存储这个关键词(关键词不止一个也不怕,ES是支持数组的),然后你在查询时,直接使用term完全匹配,就可以找到所需的数据了。我的建议仅供参考,要根据实际的场景灵活应用哈~这里也祝你工作顺利,早日完成我们伟大ES的宏图大业!✧(≖ ◡ ≖✿)
2017-09-14 回复 有任何疑惑可以回复我~
#3

琴代语兮 提问者 回复 瓦力老师

好的,谢谢老师,我试一下。我是用了比较笨的办法解决的,把所有80%的字符串全都替换成中文 “百分之八十”,然后搜索...
2017-09-14 回复 有任何疑惑可以回复我~
#4

瓦力老师 回复 琴代语兮 提问者

这位同学切勿妄自菲薄,实际工作中,只要能解决实际需求的办法,都是好办法,毕竟罗马不是一天建成的,希望你能再接再厉,想出更多的解决方案O(∩_∩)O
2017-09-15 回复 有任何疑惑可以回复我~
#5

琴代语兮 提问者 回复 瓦力老师

嗯嗯,刚才给您私信了呢~
2017-09-15 回复 有任何疑惑可以回复我~
查看2条回复

举报

0/150
提交
取消

“80%” 这样带百分号的字符串,只能搜出80,%不能搜出来。请问这是elasticsearch的bug吗?

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信