ElasticSearch全文检索(2)--分词器

本文详细介绍了ElasticSearch中分词器的重要性和作用,特别关注了IK分词器的安装、两种分词模式及其优势,包括ik_max_word和ik_smart,并探讨了自定义词库的功能。此外,还讲解了field的属性,如type、analyzer、index和source,以及如何在ElasticSearch中使用IK分词器进行全文检索。
摘要由CSDN通过智能技术生成

分词器

在ElaticSearch全文检索中,肯定不会把字段一整段的存储其中,否则数据量就会很大,失去了我们用ElaticSearch的意义
这个时候我们就需要其中的一个存放方法
Analyzer (分词器)的作用是把一段文本中的词按规则取出所包含的所有词。 对应的是Analyzer类,这是一个抽象类,切分词的具体规则是由子类实现的,所以对于不同的语言(规则),要用不同的分词器。
ElaticSearch默认的分词器对中文是单字分词,这个时候我们就需要中文分词器
由于自带分词器回将中文一个字一个字进行分词,故只介绍第三方分词器

第三方中文分析器

paoding: 庖丁解牛最新版在 https://code.google.com/p/paoding/ 中最多支持Lucene 3.0,且最新提交的代码在 2008-06-03,在svn中最新也是2010年提交,已经过时,不予考虑。

IK-analyzer:最新版在https://code.google.com/p/ik-analyzer/上,支持Lucene 4.10从2006年12月推出1.0版开始, IKAnalyzer已经推出了4个大版本。最初,它是以开源项目Luence为应用主体的,结合词典分词和文法分析算法的中文分词组件。从3.0版本开 始,IK发展为面向Java的公用分词组件,独立于Lucene项目,同时提供了对Lucene的默认优化实现。在2012版本中,IK实现了简单的分词 歧义排除算法,标志着IK分词器从单纯的词典分词向模拟语义分词衍化。 但是也就是2012年12月后没有在更新。

这边我们选择IK分词器,在文章后面会告诉为什么选择他.

安装IK分词器

下载IK分词器:(Github地址:https://github.com/medcl/elasticsearch-analysis-ik)

  1. 下载zip(压缩包):
    在这里插入图片描述
  2. 解压压缩包,并重命名为ik, 复制到plugins目录下,重启es
     ![在这里插入图片描述](https://img-blog.csdnimg.cn/216c08c0d2054f77853822ae14a31df4.png)
    

在这里插入图片描述
复制到虚拟机中在这里插入图片描述
测试分词效果:

POST /_analyze
{
   
  "text":"中华人民共和国人民大会堂",
  "analyzer":"ik_smart"
}
两种分词模式

ik分词器有两种分词模式:ik_max_word和ik_smart模式。

  1. ik_max_word

​ 会将文本做最细粒度的拆分,比如会将“中华人民共和国人民大会堂”拆分为“中华人民共和国、中华人民、中华、华人、人民大会堂、人民、共和国、大会堂、大会、会堂等词语。

  1. ik_smart

​ 会做最粗粒度的拆分,比如会将“中华人民共和国人民大会堂”拆分为中华人民共和国、人民大会堂。

上面曾说到为什么同样是久远的分词器我们却选用IK分词器呢?这是因为IK分词器可以自定义词库来不断更新,方便我们的使用

自定义词库

如果要让分词器支持一些专有词语,可以自定义词库。

iK分词器自带的main.dic的文件为扩展词典,stopword.dic为停用词典。
在这里插入图片描述
也可以上边的目录中新建一个my.dic文件(注意文件格式为utf-8(不要选择utf-8 BOM)

可以在其中自定义词汇:

比如定义:

配置文件中 配置my.dic,
在这里插入图片描述
我们已经安装了ik分词器,如何在索引和搜索时去使用ik分词器呢?这个时候我们就需要使用field去使用,那么如何在里面使用呢?使用时怎么指定类型呢?
不着急,我们接着往下走–>

field详细介绍

我们先来看下ES6.2的核心字段,看不懂没关系,留个印象就行
在这里插入图片描述

field的属性介绍

type:

通过type属性指定field的类型。

"name":{
   	
       "type":"text"
}

analyzer:

通过analyzer属性指定分词模式。

 "name": 
  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值