sdxh0506 发表于 2019-1-29 10:24:49

ElasticSearch中分词器组件配置详解

  首先要明确一点,ElasticSearch是基于Lucene的,它的很多基础性组件,都是由Apache Lucene提供的,而es则提供了更高层次的封装以及分布式方面的增强与扩展。

所以要想熟练的掌握的关于es中分词方面的知识,一定得先从Lucene抓起,否则只会是丈二和尚摸不着头脑,当然我们大多数开发者只关注于怎么用,偏底层的东东,也没有太多时间去深究,这也有情可原,遇到问题再去探究,也何尝不是一种办法,如果有时间,还是建议看看Lucene基础的知识。

在ElasticSearch或Solr中,都提供了基于配置的可插拔式的分词插件,管理方式,这样以来就组合配置方式就非常灵活,在es中,一个analysis集合
可以包含多个analyzer,而一个analyzer则由一个单个的tokenizer,零个或多个的tokenfilter组成,而一个tokenizer又可以包含零个或多个的charFilter。总体的执行流程如下图:





在es里面的一个模板配置如下:


  Java代码

[*]  index :
[*]      analysis ://一个analysis可以包含多个analyzer,tokenizer,filter,char_filter配置
[*]        analyzer :// 一个analyzer下面可以包含一个tokenizer,多个filter和char_filter, position_increment_gap是距离查询时,最大允许查询的距离,默认是100
[*]            myAnalyzer1 :
[*]                  type : custom
[*]                  tokenizer : myTokenizer1
[*]                  filter :
[*]                  char_filter :
[*]                  position_increment_gap: 256
[*]           myAnalyzer2 :
[*]                  type : custom
[*]                  tokenizer : myTokenizer1
[*]                  filter :
[*]                  char_filter :
[*]                  position_increment_gap: 256
[*]  
[*]        tokenizer :
[*]              myTokenizer1 :
[*]                  type : standard
[*]                  max_token_length : 900
[*]              myTokenizer2 :
[*]                  type : keyword
[*]                  max_token_length : 900
[*]        filter :
[*]              myTokenFilter1 :
[*]                  type : stop
[*]                  stopwords :
[*]              myTokenFilter2 :
[*]                  type : length
[*]                  min : 0
[*]                  max : 2000
[*]        char_filter :
[*]              my_html :
[*]                  type : html_strip
[*]                  escaped_tags :
[*]                  read_ahead : 1024
  


一个比较完整的分词器配置案例,就如上面的例子,几乎涵盖了所有可能用到的组件,而我们在实际应用中,要做的就是,选择组合我们需要的组件,定制成一个分词器,然后就可以使用了,
上面的这段配置,我们需要配置在elasticsearch.yml文件中,全局有效,然后我们就可以在静态mapping或动态mapping中引用和使用它了。
参考链接:
https://www.elastic.co/guide/en/elasticsearch/reference/2.1/analysis-custom-analyzer.html
  




页: [1]
查看完整版本: ElasticSearch中分词器组件配置详解