全文檢索服務 ElasticSearch其他相關:
- 介紹入門及安裝
- Field
- 整合Spring Boot
- 叢集管理
1.IK分詞器
1.1測試分詞器
在添加文檔時會進行分詞,索引中存放的就是一個一個的詞(term),當你去搜尋時就是拿關鍵字去比對詞,最終找到詞關聯的文檔。
測試目前索引庫使用的分詞器:
POST /_analyze
{
"text":"測試分詞器,後邊是測試内容:spring cloud實戰"
}
結果如下:
會發現分詞的效果将“測試”這個詞拆分成兩個單字“測”和“試”,這是因為目前索引庫使用的分詞器對中文就是單字分詞。
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:
2、解壓,并将解壓的檔案拷貝到ES安裝目錄的plugins下的ik(重命名)目錄下,重新開機es
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為停用詞典。
也可以上邊的目錄中建立一個my.dic檔案(注意檔案格式為utf-8(不要選擇utf-8 BOM))
可以在其中自定義詞彙:
比如定義:
配置檔案中 配置my.dic,
全文檢索服務 ElasticSearch---------Field