索引分词器

了解Elasticsearch分词的原理、过程,以及如何添加新的分词器等,同时插件相关知识,及其功能与安装等。

分词器的概念

在Elasticsearch中,索引分析模块是可以通过注册分词器(analyzer)来进行配置。分词器的作用是当一个文档被索引的时候,分词器从文档中提取出若干词元(token)来支持索引的存储和搜索。

分词器(omalyzer)是由一个分解器(tokenizer)、零个或多个词元过滤器(token filters)组成。

分解器处理前可能要做一些预处理,比如去掉里面的HTML标记,这些处理的算法称为字符过滤器(character filter),一个分解器会有一个或多个字符过滤器。分解器是用来把字符串分解成一系列词元。一个简单的分解器是把一个句子当遇到空格或标点符号时,分解成一个个的索引词。Elasticsearch内置了分词器、分解器和词元过滤器,同时也支持自定义这些内容。

词元过滤器的作用是对分词器提取出来的词元做进一步处理,比如转成小写,增加同义词等。处理后的结果称为索引词(Term),文档中包含了几个这样的Term称为Frequency(词频)。引擎会建立Term和原文档的倒排索引(InvertedIndex),这样就能根据Term很快到找到源文档了。

Elasticsearch内置了很多分词器,还有很多第三方的分词器插件,比如一些处理中文的分词器(后面称为“中文分词器”)。

索引分析模块包括分词器(analyzer),分解器(tokenizer)和词元过滤器(token filters)。如果没有明确定义分析模块,系统会用内置的分词器、分解器和过滤器。

下面是一个分词器的配置:

系统有一个配置选项来定义哪个分词器将在默认情况下使用。默认的逻辑名称下有一个的分词器,将用于索引和搜索。配置参数为default_search。例如:

中文分词器

在Elasticsearch中,内置了很多分词器(analyzers),但默认的分词器对中文的支持都不是太好。所以需要单独安装插件来支持,比较常用的是中科院ICTCLAS的smartcn和IKAnanlyzer.

1.smartcn

  • 安装分词:plugin install analysis-smartcn
  • 卸载:plugin remove analysis-smartcn

测试:请求:POST http://127.0.0.1:9200/_analyze/

2.IKAnanlyzer

  • 1)下载源码,下载完后解压到任意目录,然后修改elasticsearch-analysis-ik-master目录下的pom.xml文件。找到<elasticsearch.version>行,然后把后面的版本号修改成2.3.0。
  • 2)编译代码mvn package。
  • 3)编译完成后会在target\releases生成elasticsearch-analysis-ik-1.7.0.zip文件。
  • 4)解压文件到Elasticsearch/plugins目录下。
  • 5)修改配置文件增加一行:index.analysis.analyzer.ik.type:"ik"。
  • 6)重启Elasticsearch。

测试:和上面的请求一样,只是把分词替换成ik。

IKA nanlyzer有一个扩展词库,在config\ik\custom下在mydict.dic中增加需要的词组,然后重启Elasticsearch。需要注意的是文件编码是UTF-8无BOM格式编码。

比如增加了赛克蓝德单词。然后再次查询:

请求:POST http://127.0.0.1:9200/_analyze/

参数:

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值