ElasticSearch中分词器组件配置详解

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

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

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





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

Java代码   收藏代码
  1. index :  
  2.     analysis ://一个analysis能够包含多个analyzer,tokenizer,filter,char_filter配置  
  3.         analyzer :// 一个analyzer下面能够包含一个tokenizer,多个filter和char_filter, position_increment_gap是距离查询时,最大容许查询的距离,默认是100  
  4.           myAnalyzer1 :  
  5.                 type : custom  
  6.                 tokenizer : myTokenizer1  
  7.                 filter : [myTokenFilter1, myTokenFilter2]  
  8.                 char_filter : [my_html]  
  9.                 position_increment_gap: 256  
  10.            myAnalyzer2 :  
  11.                 type : custom  
  12.                 tokenizer : myTokenizer1  
  13.                 filter : [myTokenFilter1, myTokenFilter2]  
  14.                 char_filter : [my_html]  
  15.                 position_increment_gap: 256  
  16.   
  17.         tokenizer :  
  18.             myTokenizer1 :  
  19.                 type : standard  
  20.                 max_token_length : 900  
  21.             myTokenizer2 :  
  22.                 type : keyword  
  23.                 max_token_length : 900  
  24.         filter :  
  25.             myTokenFilter1 :  
  26.                 type : stop  
  27.                 stopwords : [stop1, stop2, stop3, stop4]  
  28.             myTokenFilter2 :  
  29.                 type : length  
  30.                 min : 0  
  31.                 max : 2000  
  32.         char_filter :  
  33.               my_html :  
  34.                 type : html_strip  
  35.                 escaped_tags : [xxx, yyy]  
  36.                 read_ahead : 1024  



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