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 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM