2 jixiaochuan jixiaochuan 于 2014.12.19 14:55 提问

ElasticSearch搜索结果不正确

我用ES搭建了一个搜索引擎的demo,用IK做的分词,对内容做term查询,大部分情况下结果都是正确的,但是有时会查不出结果,比如说,我查“驻外记者”这个词,返回结果为0,但是我的文档库里肯定是有“驻外记者”出现的,我把文档导入到mysql中,用模糊查询是能返回结果的,ES里就没有,但是相同的情况比如我查“恐怖袭击”返回结果就是正确的,搞不清楚问题出在哪。头一次用ES,对这个工具不太熟悉,不知道有没有人遇到和我同样问题的?

4个回答

smilesfc
smilesfc   2015.03.01 22:32

这是因为“驻外记者”这个词不在ik的词典里。用分词器之后,term只能查到切分后的词,所以能查到“驻外”或者“记者”。这确实是个坑。一种解决方法是不用Term而是用QueryString的方式查询。QueryString会调用ik分词器将“驻外记者”切分后查询,缺点是匹配上其中任意一个词就算命中,不过可以按相关性Score排序。

caozhy
caozhy   Ds   Rxr 2014.12.19 15:01

英文是否正常,检查下是不是分词的原因。

jixiaochuan
jixiaochuan   2014.12.19 20:22

应该不是分词的问题,测试过分成“驻外”和“记者”两部分,然后到数据库里like这两个词就能查到,但是ES就死活找不到,很奇怪。但大多数词比如“恐怖袭击”就很正常的返回了,跟like的结果是一样的。

caozhy
caozhy   Ds   Rxr 2015.01.03 07:24
Csdn user default icon
上传中...
上传图片
插入图片
准确详细的回答,更有利于被提问者采纳,从而获得C币。复制、灌水、广告等回答会被删除,是时候展现真正的技术了!