国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Elasticsearch 文本分析器(下)

這篇具有很好參考價值的文章主要介紹了Elasticsearch 文本分析器(下)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

字符過濾器

注意:字符過濾器用于在將字符流傳遞給分詞器之前對其進行預處理

html_strip HTML元素替換過濾器

此過濾器會替換掉HTML標簽,且會轉換HTML實體 如:& 會被替換為 &。

{
  "tokenizer": "keyword",
  "char_filter": [
    "html_strip"
  ],
  "text": "<p>I&apos;m so <b>happy</b>!</p>"
}

解析結果:

[ \nI'm so happy!\n ]

因為是 p 標簽,所以有前后的換行符。如果使用<span>標簽就不會有換行符了。

可配參數說明

  • escaped_tags
    (可選,字符串數組)不包含尖括號 ( < >) 的 HTML 元素數組。當從文本中剝離 HTML 時,過濾器會跳過這些 HTML 元素。例如,設置 [ “p” ] 將會跳過 <p> HTML 元素。

自定義字符過濾器

{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "keyword",
          "char_filter": [
            "my_custom_html_strip_char_filter"
          ]
        }
      },
      "char_filter": {
        "my_custom_html_strip_char_filter": {
          "type": "html_strip",
          "escaped_tags": [
            "b"
          ]
        }
      }
    }
  }
}

自定義字符過濾器 my_custom_html_strip_char_filter ,以 html_strip 過濾器為基礎,設置了跳過 b 標簽不過濾。

mapping 鍵值替換過濾器

配置鍵和值的映射,每當遇到與鍵相同的字符串時,它就會用與該鍵關聯(lián)的值替換它們

{
  "tokenizer": "keyword",
  "char_filter": [
    {
      "type": "mapping",
      "mappings": [
        "0 => 零",
        "1 => 壹",
        "2 => 貳",
        "3 => 叁",
        "4 => 肆",
        "5 => 伍",
        "6 => 陸",
        "7 => 柒",
        "8 => 捌",
        "9 => 玖"
      ]
    }
  ],
  "text": "9527就是你的終身代號"
}

解析結果:

{
    "tokens": [
        {
            "token": "玖伍貳柒就是你的終身代號",
            "start_offset": 0,
            "end_offset": 12,
            "type": "word",
            "position": 0
        }
    ]
}

可配參數說明

  • mappings
    (必需*,字符串數組)映射數組,每個元素的形式為key => value.
  • mappings_path
    (必需*,字符串)包含映射的文件的路徑key => value。
    此路徑必須是絕對路徑或相對于config位置的路徑,并且文件必須是 UTF-8 編碼的。文件中的每個映射必須用換行符分隔。

以上兩個參數二選一即可。

pattern_replace 正則替換過濾器

{
  "tokenizer": "keyword",
  "char_filter": [
    {
      "type": "pattern_replace",
      "pattern": "(\\d{3})(\\d{4})(\\d{4})",
      "replacement":"$1****$3"
    }
  ],
  "text": "13199838273"
}

解析結果:

{
    "tokens": [
        {
            "token": "131****8273",
            "start_offset": 0,
            "end_offset": 11,
            "type": "word",
            "position": 0
        }
    ]
}

看到結果你就知道我們示例的作用了,關于寫法可以看看可配參數的說明。

可配參數說明

  • pattern
    必需,Java正則表達式。
  • replacement
    替換字符串,用 $1…$9來表示正則表達式匹配的內容。注意,我們的示例中每一個正則匹配都用了()括號擴起來。
  • flags
    Java 正則表達式標志。

常用分詞器

分析器只能配置一個分詞器,所以很多分詞器的名稱和分析器的名稱是一致的

標準分詞器

standard詞器提供基于語法的分詞(基于 Unicode 文本分割算法)并且適用于大多數語言。

POST _analyze
{
  "tokenizer": "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 ]

如果仔細對比,你還是能發(fā)現和 standard 分析器處理結果的區(qū)別的。

我們來試試中文

{
  "tokenizer": "standard",
  "text": "我是中國人"
}

解析結果:

[,,,,]

分詞是分詞了,但是貌似不符合我們的要求,關于中文的分詞我們后面再說。

可配參數說明

  • max_token_length
    單個詞語的最大長度。如果詞語長度超過該長度,則按max_token_length間隔將其拆分。默認為255。

自定義分詞器

PUT /person1
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "my_tokenizer"
        }
      },
      "tokenizer": {
        "my_tokenizer": {
          "type": "standard",
          "max_token_length": 5
        }
      }
    }
  }
}

注意配置參數:我們配置了一個自定義的分詞器 my_tokenizer ,以 standard 為基礎類型,然后配置了一個自定義的分析器 my_analyzer,設置該分析器的分詞器為 my_tokenizer 。

letter 字母分詞器

只要遇到不是字母的字符,分詞器就會將文本分解。它對大多數歐洲語言都做得很好,但對一些亞洲語言來說就很糟糕,因為在這些語言中單詞沒有用空格分隔。

POST _analyze
{
  "tokenizer": "letter",
  "text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone."
}

解析結果:

[ The, QUICK, Brown, Foxes, jumped, over, the, lazy, dog, s, bone] 

lowercase 小寫分詞器

其作用和 letter 分詞器一樣,只是會將字母轉換為小寫。此處我們就不貼示例了。

classic 經典分詞器

適用于英語文檔。此分詞器具有對首字母縮寫詞、公司名稱、電子郵件地址和 Internet 主機名進行特殊處理的啟發(fā)式方法。然而,這些規(guī)則并不總是有效,分詞器對除英語以外的大多數語言都不能很好地工作

POST _analyze
{
  "tokenizer": "standard",
  "text": "The 2 QUICK Brown-Foxes jumped over the lazy dog's bone. email: abc@cormm.com"
}

解析結果:

{
    "tokens": [
        {
            "token": "The",
            "start_offset": 0,
            "end_offset": 3,
            "type": "<ALPHANUM>",
            "position": 0
        },
        {
            "token": "2",
            "start_offset": 4,
            "end_offset": 5,
            "type": "<ALPHANUM>",
            "position": 1
        },
        {
            "token": "QUICK",
            "start_offset": 6,
            "end_offset": 11,
            "type": "<ALPHANUM>",
            "position": 2
        },
        {
            "token": "Brown",
            "start_offset": 12,
            "end_offset": 17,
            "type": "<ALPHANUM>",
            "position": 3
        },
        {
            "token": "Foxes",
            "start_offset": 18,
            "end_offset": 23,
            "type": "<ALPHANUM>",
            "position": 4
        },
        {
            "token": "jumped",
            "start_offset": 24,
            "end_offset": 30,
            "type": "<ALPHANUM>",
            "position": 5
        },
        {
            "token": "over",
            "start_offset": 31,
            "end_offset": 35,
            "type": "<ALPHANUM>",
            "position": 6
        },
        {
            "token": "the",
            "start_offset": 36,
            "end_offset": 39,
            "type": "<ALPHANUM>",
            "position": 7
        },
        {
            "token": "lazy",
            "start_offset": 40,
            "end_offset": 44,
            "type": "<ALPHANUM>",
            "position": 8
        },
        {
            "token": "dog's",
            "start_offset": 45,
            "end_offset": 50,
            "type": "<APOSTROPHE>",
            "position": 9
        },
        {
            "token": "bone",
            "start_offset": 51,
            "end_offset": 55,
            "type": "<ALPHANUM>",
            "position": 10
        },
        {
            "token": "email",
            "start_offset": 57,
            "end_offset": 62,
            "type": "<ALPHANUM>",
            "position": 11
        },
        {
            "token": "abc@cormm.com",
            "start_offset": 64,
            "end_offset": 77,
            "type": "<EMAIL>",
            "position": 12
        }
    ]
}

關于與 standard 分詞器的區(qū)別,可以自行驗證一下。

可配參數說明

  • max_token_length
    單個詞語的最大長度。如果詞語長度超過該長度,則按max_token_length間隔將其拆分。默認為255。

path_hierarchy 路徑層次分詞器

POST _analyze
{
  "tokenizer": "path_hierarchy",
  "text": "/one/two/three"
}

解析結果:

[ /one, /one/two, /one/two/three ]

可配參數說明

  • delimiter
    用作路徑分隔符的字符。默認為 /
  • replacement
    用于分隔符的可選替換字符。默認為delimiter.
  • buffer_size
    單次讀取到術語緩沖區(qū)的字符數。默認為1024. 術語緩沖區(qū)將按此大小增長,直到所有文本都被消耗掉。建議不要更改此設置。
  • reverse:是否反轉,默認為false。
  • skip
    要跳過的初始標記數。默認為0.

示例2

拆分 - 字符,并將它們替換為 / 并跳過前兩個標記

PUT /person1
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "my_tokenizer"
        }
      },
      "tokenizer": {
        "my_tokenizer": {
          "type": "path_hierarchy",
          "delimiter": "-",
          "replacement": "/",
          "skip": 2
        }
      }
    }
  }
}
{
  "analyzer": "my_analyzer",
  "text": "one-two-three-four-five"
}

解析結果:

[ /three, /three/four, /three/four/five ]

如果設置 reverse 為 true

[ one/two/three/, two/three/, three/ ]

uax_url_email 電子郵件分詞器

{
  "tokenizer": "uax_url_email",
  "text": "Email me at john.smith@global-international.com"
}

解析結果:

[ Email, me, at, john.smith@global-international.com ]

可配參數說明

  • max_token_length
    單個詞語的最大長度。如果詞語長度超過該長度,則按max_token_length間隔將其拆分。默認為255。

令牌過濾器

令牌過濾器,是在標記之后執(zhí)行。es 提供的令牌過濾器非常多,我們只列一些可能會有用的來說一說。

uppercase 大寫過濾器

{
  "tokenizer" : "standard",
  "filter" : ["uppercase"],
  "text" : "the Quick FoX JUMPs"
}

解析結果

[ THE, QUICK, FOX, JUMPS ]

lowercase 小寫過濾器

{
  "tokenizer" : "standard",
  "filter" : ["lowercase"],
  "text" : "THE Quick FoX JUMPs"
}

解析結果:

[ the, quick, fox, jumps ]

stemmer 詞干過濾器

{
  "tokenizer": "standard",
  "filter": [ "stemmer" ],
  "text": "fox running and jumping jumped"
}

解析結果:

[ fox, run, and, jump, jump ]

注意標記提取了詞干。比如:jumping 和 jumped 提取為了 jump 。

可配參數說明

  • language
    (可選,字符串)用于詞干標記的依賴于語言的詞干提取算法。可以設置很多語言,我們常用的也就 english(默認:英語)german 德語、spanish 西班牙語等等,但還是不包括中文。

stop 停用詞過濾器

該過濾器默認將如下詞語作為停用詞:

a, an, and, are, as, at, be, but, by, for, if, in, into, is, 
it, no, not, of, on, or, such, that, the, their, then, there, 
these, they, this, to, was, will, with
{
  "tokenizer": "standard",
  "filter": [ "stop" ],
  "text": "a quick fox jumps over the lazy dog"
}

解析結果:

[ quick, fox, jumps, over, lazy, dog ]

cjk_bigram 中日韓雙字母標記過濾器

此過濾器支持中日韓的文字,但標記只對文字進行兩兩組合,嚴格上說對中文的支持也不是十分好。

{
  "tokenizer" : "standard",
  "filter" : ["cjk_bigram"],
  "text" : "我們都是中國人"
}

解析結果:

{
    "tokens": [
        {
            "token": "我們",
            "start_offset": 0,
            "end_offset": 2,
            "type": "<DOUBLE>",
            "position": 0
        },
        {
            "token": "們都",
            "start_offset": 1,
            "end_offset": 3,
            "type": "<DOUBLE>",
            "position": 1
        },
        {
            "token": "都是",
            "start_offset": 2,
            "end_offset": 4,
            "type": "<DOUBLE>",
            "position": 2
        },
        {
            "token": "是中",
            "start_offset": 3,
            "end_offset": 5,
            "type": "<DOUBLE>",
            "position": 3
        },
        {
            "token": "中國",
            "start_offset": 4,
            "end_offset": 6,
            "type": "<DOUBLE>",
            "position": 4
        },
        {
            "token": "國人",
            "start_offset": 5,
            "end_offset": 7,
            "type": "<DOUBLE>",
            "position": 5
        }
    ]
}

除去我們以上介紹的,ES 的令牌過濾器還有很多,我們就不過多說明了,因為他們大多數都是不支持中文的。文章來源地址http://www.zghlxwxcb.cn/news/detail-481271.html

到了這里,關于Elasticsearch 文本分析器(下)的文章就介紹完了。如果您還想了解更多內容,請在右上角搜索TOY模板網以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網!

本文來自互聯(lián)網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • Elasticsearch:搜索及索引分析器

    在我之前的文章 “Elasticsearch: analyzer”,我詳細介紹了在 Elasticsearch 中的分析器。分析器在 Elasticsearh 中,它在索引文檔的時候需要使用,同時,它也在搜索時,也需要針對搜索的文字進行分詞。在今天的文章中,我們來詳細介紹分析器是如何在索引及搜索時使用的。 可以在

    2024年02月05日
    瀏覽(23)
  • ElasticSearch 基礎(七)之分析器

    ElasticSearch 基礎(七)之分析器

    就 ES 基礎部分來說這暫時就是最后一篇的文章,寫完之后就會學習 MQ 了。本篇內容簡單了解 ES 的分析器,最重要的還是根據自己需求去定制自定義分析器,自定義分析器自行了解,這里只是基礎。其他比較重要的就是中文分詞器了,只需要知道常用的幾種中文分詞器就可以

    2024年02月09日
    瀏覽(21)
  • ElasticSearch系列 - SpringBoot整合ES:ElasticSearch分析器

    1. ElasticSearch match 文本搜索的過程? Elasticsearch 的 match 查詢是一種基于文本匹配的查詢方式,它的搜索過程如下: ① 將查詢字符串分詞:Elasticsearch 會將查詢字符串分成一個個詞項(term),并去除停用詞(如“的”、“是”等常用詞匯)和標點符號等無意義的字符。 ② 構建

    2023年04月18日
    瀏覽(26)
  • ElasticSearch系列 - SpringBoot整合ES:分析器

    1. ElasticSearch match 文本搜索的過程? Elasticsearch 的 match 查詢是一種基于文本匹配的查詢方式,它的搜索過程如下: ① 將查詢字符串分詞:Elasticsearch 會將查詢字符串分成一個個詞項(term),并去除停用詞(如“的”、“是”等常用詞匯)和標點符號等無意義的字符。 ② 構建

    2024年02月06日
    瀏覽(24)
  • Elasticsearch 分詞器切詞器分析器

    Elasticsearch 分詞器切詞器分析器

    normalization : 文檔規(guī)范化 先切詞,然后規(guī)范化. 規(guī)范化要規(guī)范哪些內容? 大小寫; 標點符號; 時態(tài); 復數; 規(guī)范化主要是為了匹配更精準 character filter : 字符過濾器. 標點符號 分詞之前的預處理,過濾無用字符 HTML Strip Character Filter :html_strip 參數:escaped_tags 需要保留的html標簽 Map

    2024年02月12日
    瀏覽(46)
  • 分析器:常見問題

    分析器:常見問題

    源生成器(增量生成器)由于它特殊的定位,關于它的調試十分困難。在這里分享一些調試它的經驗。 另外經常有寫類庫,然后提供可以生成代碼的Attribute給用戶的需求,此時需要用到傳遞引用的知識點。 源生成器項目和普通的項目不同。 普通的會在你按下運行或調試后才

    2024年02月01日
    瀏覽(15)
  • 詞法分析器(c++)

    詞法分析器(c++)

    個人覺得單純是用來完成實驗報告的話還行,但僅做參考,因為本人的編程水平有限,怕誤人子弟。 本次代碼支持以下操作: 單行注釋 多行注釋 文件形式輸入 種別碼可以在文件中自由修改 單詞字符串識別支持: 部分(可手動在程序外部---reference.txt文件添加,),

    2024年02月04日
    瀏覽(21)
  • 編譯原理———詞法分析器

    編譯原理———詞法分析器

    設計并實現一個包含預處理功能的詞法分析程序,加深對編譯中詞法分析過程的理解。 輸入:所給文法的源程序字符串。 輸出:二元組(syn,token或sum)構成的序列。其中, ?syn為單詞種別碼。 ?Token為存放的單詞自身字符串。 ?Sum為整型常量。 具體實現時,可以將單詞的二

    2024年02月08日
    瀏覽(91)
  • Lex 生成一個詞法分析器

    Lex 生成一個詞法分析器

    ?lex 通過輸入一個.l 文件生成一個lex.yy.c 文件,然后通過c 編譯器編譯成一個可執(zhí)行的詞法分析器。 該詞法分析器掃描輸入源文件,生成一個token 符號流給后面語法分析器使用。 ? .l 文件的結構, 分成三個部分,聲明, 轉換規(guī)則, 自定義規(guī)則。 三個部分由%%分割 聲明段,

    2024年02月19日
    瀏覽(22)
  • 詞法分析器的設計與實現

    詞法分析器的設計與實現

    1.1、實驗目的 ????????加深對詞法分析器的工作過程的理解;加強對詞法分析方法的掌握;能夠采用一種編程語言實現簡單的詞法分析程序;能夠使用自己編寫的分析程序對簡單的程序段進行詞法分析。 1.2、實驗要求 ? ? ? ? 1)對單詞的構詞規(guī)則有明確的定義; ? ? ?

    2024年02月13日
    瀏覽(17)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包