天天看點

全文檢索服務 ElasticSearch---------IK分詞器的使用全文檢索服務 ElasticSearch其他相關:1.IK分詞器

全文檢索服務 ElasticSearch其他相關:

  • 介紹入門及安裝
  • Field
  • 整合Spring Boot
  • 叢集管理

1.IK分詞器

1.1測試分詞器

  在添加文檔時會進行分詞,索引中存放的就是一個一個的詞(term),當你去搜尋時就是拿關鍵字去比對詞,最終找到詞關聯的文檔。

測試目前索引庫使用的分詞器:

POST /_analyze
{
  "text":"測試分詞器,後邊是測試内容:spring cloud實戰"
}
           

結果如下:

全文檢索服務 ElasticSearch---------IK分詞器的使用全文檢索服務 ElasticSearch其他相關:1.IK分詞器

  會發現分詞的效果将“測試”這個詞拆分成兩個單字“測”和“試”,這是因為目前索引庫使用的分詞器對中文就是單字分詞。

1.2.中文分詞器

1.2.1.Lucene自帶中文分詞器

StandardAnalyzer:

單字分詞:就是按照中文一個字一個字地進行分詞。如:“我愛中國”,

效果:“我”、“愛”、“中”、“國”。

CJKAnalyzer

二分法分詞:按兩個字進行切分。如:“我是中國人”,效果:“我是”、“是中”、“中國”“國人”。

上邊兩個分詞器無法滿足需求。

SmartChineseAnalyzer

對中文支援較好,但擴充性差,擴充詞庫和禁用詞庫等不好處理

1.2.2.第三方中文分析器

paoding: 庖丁解牛最新版在 https://code.google.com/p/paoding/ 中最多支援Lucene 3.0,且最新送出的代碼在 2008-06-03,在svn中最新也是2010年送出,已經過時,不予考慮。

IK-analyzer:最新版在https://code.google.com/p/ik-analyzer/上,支援Lucene 4.10從2006年12月推出1.0版開始, IKAnalyzer已經推出了4個大版本。最初,它是以開源項目Luence為應用主體的,結合詞典分詞和文法分析算法的中文分詞元件。從3.0版本開 始,IK發展為面向Java的公用分詞元件,獨立于Lucene項目,同時提供了對Lucene的預設優化實作。在2012版本中,IK實作了簡單的分詞 歧義排除算法,标志着IK分詞器從單純的詞典分詞向模拟語義分詞衍化。 但是也就是2012年12月後沒有在更新。

1.3.安裝IK分詞器

使用IK分詞器可以實作對中文分詞的效果。

下載下傳IK分詞器:(Github位址:https://github.com/medcl/elasticsearch-analysis-ik)

1、下載下傳zip:

全文檢索服務 ElasticSearch---------IK分詞器的使用全文檢索服務 ElasticSearch其他相關:1.IK分詞器

2、解壓,并将解壓的檔案拷貝到ES安裝目錄的plugins下的ik(重命名)目錄下,重新開機es

全文檢索服務 ElasticSearch---------IK分詞器的使用全文檢索服務 ElasticSearch其他相關:1.IK分詞器

3、測試分詞效果:

POST /_analyze
{
  "text":"中華人民共和國人民大會堂",
  "analyzer":"ik_smart"
}
           

1.4.兩種分詞模式

ik分詞器有兩種分詞模式:ik_max_word和ik_smart模式。

1、ik_max_word

​  會将文本做最細粒度的拆分,比如會将“中華人民共和國人民大會堂”拆分為“中華人民共和國、中華人民、中華、華人、人民大會堂、人民、共和國、大會堂、大會、會堂等詞語。

2、ik_smart

  會做最粗粒度的拆分,比如會将“中華人民共和國人民大會堂”拆分為中華人民共和國、人民大會堂。

1.5.自定義詞庫

如果要讓分詞器支援一些專有詞語,可以自定義詞庫。

iK分詞器自帶的main.dic的檔案為擴充詞典,stopword.dic為停用詞典。

全文檢索服務 ElasticSearch---------IK分詞器的使用全文檢索服務 ElasticSearch其他相關:1.IK分詞器

也可以上邊的目錄中建立一個my.dic檔案(注意檔案格式為utf-8(不要選擇utf-8 BOM))

可以在其中自定義詞彙:

比如定義:

配置檔案中 配置my.dic,

全文檢索服務 ElasticSearch---------IK分詞器的使用全文檢索服務 ElasticSearch其他相關:1.IK分詞器

全文檢索服務 ElasticSearch---------Field

繼續閱讀