【全文搜索引擎】Elasticsearch之分词器
生活随笔
收集整理的這篇文章主要介紹了
【全文搜索引擎】Elasticsearch之分词器
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
分詞器
- 分詞器(Analyzer):將一段文本,按照一定邏輯,分析成多個詞語的一種工具
- 如:華為手機 — > 華為、手、手機
- ElasticSearch 內置分詞器
- Standard Analyzer - 默認分詞器,按詞切分,小寫處理
- Simple Analyzer - 按照非字母切分(符號被過濾), 小寫處理
- Stop Analyzer - 小寫處理,停用詞過濾(the,a,is)
- Whitespace Analyzer - 按照空格切分,不轉小寫
- Keyword Analyzer - 不分詞,直接將輸入當作輸出
- Patter Analyzer - 正則表達式,默認\W+(非字符分割)
- Language - 提供了30多種常見語言的分詞器
- ElasticSearch 內置分詞器對中文很不友好,處理方式為: 一個字一個詞
IK分詞器
- IKAnalyzer是一個開源的,基于java語言開發的輕量級的中文分詞工具包
- 是一個基于Maven構建的項目
- 具有60萬字/秒的高速處理能力
- 支持用戶詞典擴展定義
- 下載地址: https://github.com/medcl/elasticsearch-analysis-ik/archive/v7.4.0.zip
使用IK分詞器
IK分詞器有兩種分詞模式:ik_max_word和ik_smart模式。
ik_max_word
會將文本做最細粒度的拆分,比如會將“乒乓球明年總冠軍”拆分為“乒乓球、乒乓、球、明年、總冠軍、冠軍。
#方式一ik_max_wordGET /_analyze{"analyzer": "ik_max_word","text": "乒乓球明年總冠軍"}ik_max_word分詞器執行如下:
{"tokens" : [{"token" : "乒乓球","start_offset" : 0,"end_offset" : 3,"type" : "CN_WORD","position" : 0},{"token" : "乒乓","start_offset" : 0,"end_offset" : 2,"type" : "CN_WORD","position" : 1},{"token" : "球","start_offset" : 2,"end_offset" : 3,"type" : "CN_CHAR","position" : 2},{"token" : "明年","start_offset" : 3,"end_offset" : 5,"type" : "CN_WORD","position" : 3},{"token" : "總冠軍","start_offset" : 5,"end_offset" : 8,"type" : "CN_WORD","position" : 4},{"token" : "冠軍","start_offset" : 6,"end_offset" : 8,"type" : "CN_WORD","position" : 5}]}ik_smart
會做最粗粒度的拆分,比如會將“乒乓球明年總冠軍”拆分為乒乓球、明年、總冠軍。
#方式二ik_smartGET /_analyze{"analyzer": "ik_smart","text": "乒乓球明年總冠軍"}ik_smart分詞器執行如下:
{"tokens" : [{"token" : "乒乓球","start_offset" : 0,"end_offset" : 3,"type" : "CN_WORD","position" : 0},{"token" : "明年","start_offset" : 3,"end_offset" : 5,"type" : "CN_WORD","position" : 1},{"token" : "總冠軍","start_offset" : 5,"end_offset" : 8,"type" : "CN_WORD","position" : 2}]} 《新程序員》:云原生和全面數字化實踐50位技術專家共同創作,文字、視頻、音頻交互閱讀總結
以上是生活随笔為你收集整理的【全文搜索引擎】Elasticsearch之分词器的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 【linux系统】IK分词器安装
- 下一篇: 【全文搜索引擎】Elasticsearc