es分词问题

今天来聊聊es的分词问题。
我们的项目做的是舆情搜索,主要的技术在es。当时就到了一个很奇怪的问题,通过关键词查询,返回来的文本内容中并没有这个关键词,我们还对查询做来高亮显示。关键词是unita,返回的文本数据可以高亮的词为unit,很郁闷。

倒排索引

elasticsearch的底层是由lucene实现,主要的原理是倒排索引,在知乎上看到一篇对倒排索引原理介绍特别好的文章Lucene 查询原理。这里简单的转载一些内容。
在es字段类型中,我们可以简单的划分为可以分析字段(使用分析器分析,入text),不可以分析字段(如keyword)
而不可以分析的字段在索引存储中就是最小的单元,我们称之为term(词条)。而对于可分析字段text,在索引的创建过程中,会使用特别的分析器对这个字段内容进行分析,最后形成一系列的term。倒排索引既是使用这些term构建一个倒排链,通过term查询具体的文档。
何为倒排链?假设你在es存储了三篇文档。

docid name age describe
2 ycc 18 this is a handsame boy
3 ycc 18 nothing is impossible
1 lin 17 this is a hadsame boy

对于name和age字段,在索引创建中存在两条对应的倒排链:

ycc (2,3)
lin (1)
18 (2,3)
17 (1)
  • 1
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值