一、ElasticSearch分词器概念
java學習討論群:725562382
1、Analysis 和 Analyzer
Analysis: 文本分析是把全文本轉換一系列單詞(term/token)的過程,也叫分詞。Analysis是通過Analyzer來實現的。
當一個文檔被索引時,每個Field都可能會創建一個倒排索引(Mapping可以設置不索引該Field)。
倒排索引的過程就是將文檔通過Analyzer分成一個一個的Term,每一個Term都指向包含這個Term的文檔集合。
當查詢query時,Elasticsearch會根據搜索類型決定是否對query進行analyze,然后和倒排索引中的term進行相關性查詢,匹配相應的文檔。
2 、Analyzer組成
分析器(analyzer)都由三種構件塊組成的:character filters?,?tokenizers?,?token filters。
1) character filter 字符過濾器
在一段文本進行分詞之前,先進行預處理,比如說最常見的就是, 過濾html標簽(<span>hello<span> --> hello),& --> and(I&you --> I and you)2) tokenizers 分詞器
英文分詞可以根據空格將單詞分開,中文分詞比較復雜,可以采用機器學習算法來分詞。
3) Token filters Token過濾器
將切分的單詞進行加工。大小寫轉換(例將“Quick”轉為小寫),去掉詞(例如停用詞像“a”、“and”、“the”等等),或者增加詞(例如同義詞像“jump”和“leap”)。
三者順序:Character Filters--->Tokenizer--->Token Filter
三者個數:analyzer = CharFilters(0個或多個) + Tokenizer(恰好一個) + TokenFilters(0個或多個)
3、Elasticsearch的內置分詞器
-
Standard Analyzer - 默認分詞器,按詞切分,小寫處理
-
Simple Analyzer - 按照非字母切分(符號被過濾), 小寫處理
-
Stop Analyzer - 小寫處理,停用詞過濾(the,a,is)
-
Whitespace Analyzer - 按照空格切分,不轉小寫
-
Keyword Analyzer - 不分詞,直接將輸入當作輸出
-
Patter Analyzer - 正則表達式,默認\W+(非字符分割)
-
Language - 提供了30多種常見語言的分詞器
-
Customer Analyzer 自定義分詞器
4、創建索引時設置分詞器
PUT new_index {"settings": {"analysis": {"analyzer": {"std_folded": {"type": "custom","tokenizer": "standard","filter": ["lowercase","asciifolding"]}}}},"mappings": {"properties": {"title": {"type": "text","analyzer": "std_folded" #指定分詞器},"content": {"type": "text","analyzer": "whitespace" #指定分詞器}}} }?
總結
以上是生活随笔為你收集整理的一、ElasticSearch分词器概念的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Mysql:kill命令之mysql杀死
- 下一篇: Mysql:Mysql数据库系统表之详细