日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

04.内置analyzer和analyze-API使用

發布時間:2024/2/28 编程问答 33 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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

  • standard analyzer: 按照unicode 定義的word boundary進行切分,會移除大部分的標點符號,并且將token轉成小寫,同時支持自定義一些stop words。
  • simple analyzer: 遇到不是letter的char就切詞,并且將token轉化為小寫。
  • whitespace analyzer: 遇到空格時切詞,不會進行小寫轉換
  • stop analyzer: 在simple analyzer的基礎上增加了stop words的功能
  • keyword analyzer: 會將所有的輸入當做一個token輸出
  • pattern analyzer: 使用正則匹配的值作為切分點得到token,支持lowercase convert 和 stop words
  • language analyzer: es提供了一些語言識別的analyzer
  • fingerprint analyzer: 會將輸入進行lowercase,sorted,deduplicated 然后連接成一個token輸出
  • 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的組成是

  • standard tokenizer
  • [lowercase-token-filter, stop-token-filter(該filter默認沒有啟用)]
  • 沒有使用char_filter
    所以我們也可以借助standard來快速自頂一個standard analyzer

    PUT /standard_example {"settings": {"analysis": {"analyzer": {"rebuilt_standard": {"tokenizer": "standard","filter": []}}}} }POST standard_example/_analyze {"analyzer": "rebuilt_standard","text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone." }返回 [The,2,QUICK,Brown-Foxes,jumped,over,the,lazy,dog's,bone]

    注意,這里是定義了一個新的analyzer,叫 rebuilt_standard ,原來的standard analyzer并沒有被改變。
    這里可以看到沒有進行小寫轉換。

    2. simple analyzer

    遇到不是letter的char就切詞,并且將token轉化為小寫。

    1.配置信息

    2.定義analyzer
    以為沒有配置,所以不需要設置
    3.拆解,重組analyzer

  • lowercase-tokenizer ,只有這一個tokenizer,別的沒有
  • PUT /simple_example {"settings": {"analysis": {"analyzer": {"rebuilt_simple": {"tokenizer": "lowercase","filter": [ ]}}}} }

    3. whitespace analyzer

    遇到空格時切詞,不會進行小寫轉換

    1.配置信息

    2.定義analyzer
    不需要配置

    3.拆解analyzer

    • 只有white-space tokenizer
    PUT /whitespace_example {"settings": {"analysis": {"analyzer": {"rebuilt_whitespace": {"tokenizer": "whitespace","filter": [ ]}}}}

    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

    PUT /stop_example {"settings": {"analysis": {"filter": {"english_stop": {"type": "stop","stopwords": "_english_" }},"analyzer": {"rebuilt_stop": {"tokenizer": "lowercase","filter": ["english_stop" ]}}}} }

    5. keyword analyzer: 會將所有的輸入當做一個token輸出

    1.配置信息

    2.定義analyzer
    不需要
    3.拆解analyzer
    只有 Keyword Tokenizer

    PUT /keyword_example {"settings": {"analysis": {"analyzer": {"rebuilt_keyword": {"tokenizer": "keyword","filter": [ ]}}}} }

    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(默認沒有開啟)

    PUT /pattern_example {"settings": {"analysis": {"tokenizer": {"split_on_non_word": {"type": "pattern","pattern": "\\W+" }},"analyzer": {"rebuilt_pattern": {"tokenizer": "split_on_non_word","filter": ["lowercase" ]}}}} }

    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 是必須品,其他的都是可有可無的。

    POST _analyze {"analyzer": "whitespace","text": "The quick brown fox." }POST _analyze {"tokenizer": "keyword","char_filter": [ "html_strip" ],"text": "<p>I&apos;m so <b>happy</b>!</p>" }POST _analyze {"tokenizer": "standard","filter": [ "lowercase", "asciifolding" ],"text": "Is this déja vu?" }

    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長度發生變化進而影響了高亮問題的情況

    超強干貨來襲 云風專訪:近40年碼齡,通宵達旦的技術人生

    總結

    以上是生活随笔為你收集整理的04.内置analyzer和analyze-API使用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。