04.内置analyzer和analyze-API使用
文章目錄
- 1. 自帶的analyzer
- 1. 主要analyzer的解析
- 1. standard analyzer
- 2. simple analyzer
- 3. whitespace analyzer
- 4. stop analyzer
- 5. keyword analyzer: 會將所有的輸入當做一個token輸出
- 6. pattern analyzer
- 7. language analyzer: es提供了一些語言識別的analyzer
- 8. fingerprint analyzer
- 2. analyze API使用
- 3. 自定義一個analyzer
- 4. 實際業務場景實現
1. 自帶的analyzer
1. 主要analyzer的解析
1. standard analyzer
按照unicode 定義的word boundary進行切分,會移除大部分的標點符號,并且將token轉成小寫,同時支持自定義一些stop words。
1.配置信息
max_token_length: token的最大長度,默認為255
stopwords: 停用詞,可以引用一些預定義的(比如_english_,參考stop token filter 可以看到這些預定義的信息 這里),也可以直接在這里定一個一個word list. 這里的配置默認為none,就是不進行stop
stopwords_path: 可以引用一個文件中定義的停用詞
2.定義analyzer
PUT my_index {"settings": {"analysis": {"analyzer": {"my_english_analyzer": {"type": "standard","max_token_length": 5,"stopwords": "_english_"}}}} }POST my_index/_analyze {"analyzer": "my_english_analyzer","text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone." }返回 [ 2, quick, brown, foxes, jumpe, d, over, lazy, dog's, bone ]3.拆解analyzer
standard analyzer的組成是
沒有使用char_filter
所以我們也可以借助standard來快速自頂一個standard analyzer
注意,這里是定義了一個新的analyzer,叫 rebuilt_standard ,原來的standard analyzer并沒有被改變。
這里可以看到沒有進行小寫轉換。
2. simple analyzer
遇到不是letter的char就切詞,并且將token轉化為小寫。
1.配置信息
無
2.定義analyzer
以為沒有配置,所以不需要設置
3.拆解,重組analyzer
3. whitespace analyzer
遇到空格時切詞,不會進行小寫轉換
1.配置信息
無
2.定義analyzer
不需要配置
3.拆解analyzer
- 只有white-space tokenizer
4. stop analyzer
在simple analyzer的基礎上增加了stop words的功能
1.配置信息
stopwords: 和standard analyzer配置一致
stopwords_path: 和standard analyzer 配置一致
2.定義analyzer
PUT my_index {"settings": {"analysis": {"analyzer": {"my_stop_analyzer": {"type": "stop","stopwords": ["the", "over"]}}}} }POST my_index/_analyze {"analyzer": "my_stop_analyzer","text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone." }3.拆解analyzer
lowercase-tokenizer
stop-token-filter
5. keyword analyzer: 會將所有的輸入當做一個token輸出
1.配置信息
無
2.定義analyzer
不需要
3.拆解analyzer
只有 Keyword Tokenizer
6. pattern analyzer
使用正則匹配的值作為切分點得到token,支持lowercase convert 和 stop words
1.配置信息
pattern
flags
lowercase
stopwords
stopwords_path
2.定義analyzer
PUT my_index {"settings": {"analysis": {"analyzer": {"my_email_analyzer": {"type": "pattern","pattern": "\\W|_", "lowercase": true}}}} }POST my_index/_analyze {"analyzer": "my_email_analyzer","text": "John_Smith@foo-bar.com" }返回 [ john, smith, foo, bar, com ]3.拆解analyzer
Pattern Tokenizer
Lower Case Token Filter,Stop Token Filter(默認沒有開啟)
7. language analyzer: es提供了一些語言識別的analyzer
不看了,這個感覺暫時用不上,也不會其他的外語,不好測試😂
1.配置信息
2.定義analyzer
3.拆解analyzer
8. fingerprint analyzer
會將輸入進行lowercase,sorted,deduplicated 然后連接成一個token輸出
1.配置信息
separator:連接term使用的字符,默認是space
max_output_size:產生的token的最大長度,默認255
stopwords: 和standard analyzer配置一致
stopwords_path: 和standard analyzer 配置一致
2.定義analyzer
PUT my_index {"settings": {"analysis": {"analyzer": {"my_fingerprint_analyzer": {"type": "fingerprint","stopwords": "_english_"}}}} }POST my_index/_analyze {"analyzer": "my_fingerprint_analyzer","text": "Yes yes, G?del said this sentence is consistent and." } 返回[ consistent godel said sentence yes ]上面返回的結果中間沒有逗號哦,是一個詞。
3.拆解analyzer
Standard Tokenizer
下面的都是token filter
Lower Case Token Filter
ASCII folding
Stop Token Filter
Fingerprint
https://unicode.org/reports/tr29/#Word_Boundaries
2. analyze API使用
測試analyze API可以使用下面四種方式
GET /_analyzePOST /_analyzeGET /<index>/_analyzePOST /<index>/_analyze在傳入參數的時候,可以直接使用analyzer進行使用,也可以使用 char_filter, filter, tokenizer來進行analyze的測試和使用
在測試的時候,當使用分解的組件進行測試的時候,準尋上面介紹analyzer的結構介紹,tokenizer 是必須品,其他的都是可有可無的。
3. 自定義一個analyzer
PUT analyze_test {"settings": {"analysis": {"analyzer":{"my_analyzer":{"tokenizer":"standard","char_filter":["my_char_filter","html_strip"], #過濾html,增加映射"filter":["my_stem_filter"] # 詞干提取}},"char_filter": {"my_char_filter":{"type":"mapping","mappings":["a => b","c => d"]}},"filter": {"my_stem_filter":{"type":"stemmer","name":"english"}}}} }GET analyze_test/_analyze {"analyzer": "my_analyzer","text":["<div>aa</div>i want to going shoping"] }返回 ["bb"," i"," wbnt"," to"," go"," shope"]待補充
4. 實際業務場景實現
待補充
測試一下char_filter導致原來的text長度發生變化進而影響了高亮問題的情況
總結
以上是生活随笔為你收集整理的04.内置analyzer和analyze-API使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: spark-on-yarn安装cento
- 下一篇: 05.analysis-normaliz