ElasticSearch之分词器选择

简介

ElasticSearch在倒排索引时会使用内置的分词器(Analyzer)对文本进行分词,而在查询的时候也会使用分词器进行分词后进行检索匹配。

常见的分词器

自带分词器

es自带的分词器有以下几个:

名称

特点

备注

standard

按词切分,支持多语言

小写处理

支持中文,采用的方法为单字切分

默认分词器

Simple

按照非字母切分

小写处理

 

Whitespace 

空白字符作为分隔符

 

Stop 

相比Simple Analyzer多了去除请用词处理

停用词指语气助词等修饰性词语,如the, an, 的, 这等

 

Keyword

不分词,直接将输入作为一个单词输出

 

Pattern 

通过正则表达式自定义分隔符

默认是\W+,即非字词的符号作为分隔符

 

 

  开源分词器

es对于中文分词的默认处理是一个字当做一个词来分词,这样处理导致分词过于复杂,效率低下, 因此对于中文分词有几个开源的分词器,其中最常用的是IK分词器。因此本人也选用了IK作为我们项目es服务的分词器。

  • IK:实现中英文单词的切分,可自定义词库,支持热更新分词词典。传送门
  • jjieba:支持分词和词性标注,支持繁体分词,自定义词典,并行分词等.传送门
  • HinIp:由一系列模型与算法组成的Java工具包,目标是普及自然语言处理在生产环境中的应用。传送门
  • THUAC:中文分词和词性标注。传送门

 IK分词器安装配置

安装Ik分词器

在上文连接下载IK分词器后,复制到es目录目录下的plugins目录下,然后重启es。

注意:添加IK分词器的顺序为:添加分词器->创建索引->测试

IK分词器的两种分词模式

ik_max_word:

最细粒度的查询,分出的词条最多。

ik_smart:

最粗粒度的查询,大体切分一下,分出的词条比较少。

使用IK分词器创建索引

PUT ysz
{
    "settings":{
        "number_of_shards":10,
        "number_of_replicas":1,
        "refresh_interval":"1s",
        "analysis":{   
            "analyzer":{
                "ik":{
                    "tokenizer":"ik_max_word"
                 }
            }
        }
    },
    "mappings":{
        "properties":{
            "id":{
                "type":"long"
            },
            "name":{
                "type":"text"
            },
            "type":{
                "type":"text"
            },
            "createTime":{
                "type":"date",
                "format":"yyyy-MM-dd HH:mm:ss"
            }
        }
    }
}

默认分词器和IK分词器分词效果对比

我们以下面这句话为例:我是一名中国人

IK分词器效果

ik_max_word

ik_smart

standard

由上,可以看到,区别很明显。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值