溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

基于ElasticSearch Analyzer的使用規(guī)則是什么

發(fā)布時(shí)間:2022-04-19 16:23:03 來(lái)源:億速云 閱讀:116 作者:iii 欄目:移動(dòng)開發(fā)

本文小編為大家詳細(xì)介紹“基于ElasticSearch Analyzer的使用規(guī)則是什么”,內(nèi)容詳細(xì),步驟清晰,細(xì)節(jié)處理妥當(dāng),希望這篇“基于ElasticSearch Analyzer的使用規(guī)則是什么”文章能幫助大家解決疑惑,下面跟著小編的思路慢慢深入,一起來(lái)學(xué)習(xí)新知識(shí)吧。

analyzer的使用規(guī)則

查詢只能查找倒排索引表中真實(shí)存在的項(xiàng), 所以保證文檔在索引時(shí)與查詢字符串在搜索時(shí)應(yīng)用相同的分析過(guò)程非常重要,這樣查詢的項(xiàng)才能夠匹配倒排索引中的項(xiàng)。

盡管是在說(shuō) 文檔 ,不過(guò)分析器可以由每個(gè)字段決定。 每個(gè)字段都可以有不同的分析器,既可以通過(guò)配置為字段指定分析器,也可以使用更高層的類型(type)、索引(index)或節(jié)點(diǎn)(node)的默認(rèn)配置。在索引時(shí),一個(gè)字段值是根據(jù)配置或默認(rèn)分析器分析的。

例如為 my_index 新增一個(gè)字段:

PUT /my_index/_mapping/my_type
{
    "my_type": {
        "properties": {
            "english_title": {
                "type":     "string",
                "analyzer": "english"
            }
        }
    }
}

現(xiàn)在我們就可以通過(guò)使用 analyze API 來(lái)分析單詞 Foxes ,進(jìn)而比較 english_title 字段和 title 字段在索引時(shí)的分析結(jié)果:

GET /my_index/_analyze
{
"field": "my_type.title",
"text": "Foxes"
}
 
GET /my_index/_analyze
{
"field": "my_type.english_title",
"text": "Foxes"
}
  1. 字段 title ,使用默認(rèn)的 standard 標(biāo)準(zhǔn)分析器,返回詞項(xiàng) foxes 。

  2. 字段 english_title ,使用 english 英語(yǔ)分析器,返回詞項(xiàng) fox 。

這意味著,如果使用底層 term 查詢精確項(xiàng) fox 時(shí), english_title 字段會(huì)匹配但 title 字段不會(huì)。

如同 match 查詢這樣的高層查詢知道字段映射的關(guān)系,能為每個(gè)被查詢的字段應(yīng)用正確的分析器。 可以使用 validate-query API 查看這個(gè)行為:

GET /my_index/my_type/_validate/query?explain
{
    "query": {
        "bool": {
            "should": [
                { "match": { "title":         "Foxes"}},
                { "match": { "english_title": "Foxes"}}
            ]
        }
    }
}

返回語(yǔ)句的 explanation 結(jié)果:

(title:foxes english_title:fox)

match 查詢?yōu)槊總€(gè)字段使用合適的分析器,以保證它在尋找每個(gè)項(xiàng)時(shí)都為該字段使用正確的格式。

默認(rèn)分析器

雖然我們可以在字段層級(jí)指定分析器, 但是如果該層級(jí)沒(méi)有指定任何的分析器,那么我們?nèi)绾文艽_定這個(gè)字段使用的是哪個(gè)分析器呢?

分析器可以從三個(gè)層面進(jìn)行定義:按字段(per-field)、按索引(per-index)或全局缺?。╣lobal default)。Elasticsearch 會(huì)按照以下順序依次處理,直到它找到能夠使用的分析器。索引時(shí)的順序如下:

  • 字段映射里定義的 analyzer ,否則

  • 索引設(shè)置中名為 default 的分析器,默認(rèn)為

  • standard 標(biāo)準(zhǔn)分析器

在搜索時(shí),順序有些許不同:

  • 查詢自己定義的 analyzer ,否則

  • 字段映射里定義的 analyzer ,否則

  • 索引設(shè)置中名為 default 的分析器,默認(rèn)為

  • standard 標(biāo)準(zhǔn)分析器

有時(shí),在索引時(shí)和搜索時(shí)使用不同的分析器是合理的。 我們可能要想為同義詞建索引(例如,所有 quick 出現(xiàn)的地方,同時(shí)也為 fast 、 rapid 和 speedy 創(chuàng)建索引)。但在搜索時(shí),我們不需要搜索所有的同義詞,取而代之的是尋找用戶輸入的單詞是否是 quick 、 fast 、 rapid 或 speedy 。

為了區(qū)分,Elasticsearch 也支持一個(gè)可選的 search_analyzer 映射,它僅會(huì)應(yīng)用于搜索時(shí)( analyzer 還用于索引時(shí))。還有一個(gè)等價(jià)的 default_search 映射,用以指定索引層的默認(rèn)配置。

如果考慮到這些額外參數(shù),一個(gè)搜索時(shí)的 完整 順序會(huì)是下面這樣:

  • 查詢自己定義的 analyzer ,否則

  • 字段映射里定義的 search_analyzer ,否則

  • 字段映射里定義的 analyzer ,否則

  • 索引設(shè)置中名為 default_search 的分析器,默認(rèn)為

  • 索引設(shè)置中名為 default 的分析器,默認(rèn)為

  • standard 標(biāo)準(zhǔn)分析器

Elasticsearch分詞(Analyzer)

一、什么是Analysis ?

Analysis 叫做分詞,就是將文本轉(zhuǎn)換為一系列單詞(term/token)的過(guò)程。

Analysis 是通過(guò)Analyzer來(lái)實(shí)現(xiàn)的。

可使用Elasticserach內(nèi)置的分析器或按需優(yōu)化分需求或安裝分析器插件 。

在數(shù)據(jù)寫入的時(shí)候轉(zhuǎn)換詞條于Query語(yǔ)句查詢的時(shí)候也需要用相同的分析器。

二、Analyzer的組成與工作機(jī)制

Character Filter 針對(duì)原始文本處理,例如去除html。

Tokenizer 按規(guī)則切分為單詞。Tokenizer Filter將切分的單詞進(jìn)行加工,小寫,刪除stopwords,增加同義詞。

基于ElasticSearch Analyzer的使用規(guī)則是什么

三、Elasticserach內(nèi)置的一些分詞器

1) _analyzer API 三種使用方法

基于ElasticSearch Analyzer的使用規(guī)則是什么

2) Standard Analyzer

原理

基于ElasticSearch Analyzer的使用規(guī)則是什么

示例

基于ElasticSearch Analyzer的使用規(guī)則是什么

3)Simple Analyzer

原理

基于ElasticSearch Analyzer的使用規(guī)則是什么

示例

基于ElasticSearch Analyzer的使用規(guī)則是什么

4)Whitespace Analyzer

原理

基于ElasticSearch Analyzer的使用規(guī)則是什么

示例

基于ElasticSearch Analyzer的使用規(guī)則是什么

5)Stop Analyzer

原理

基于ElasticSearch Analyzer的使用規(guī)則是什么

示例

基于ElasticSearch Analyzer的使用規(guī)則是什么

6)Keyword Analyzer

原理

基于ElasticSearch Analyzer的使用規(guī)則是什么

示例

基于ElasticSearch Analyzer的使用規(guī)則是什么

7)Pattern Analyzer

原理

基于ElasticSearch Analyzer的使用規(guī)則是什么

示例

基于ElasticSearch Analyzer的使用規(guī)則是什么

8)Language Analyzer

支持按語(yǔ)言分詞

基于ElasticSearch Analyzer的使用規(guī)則是什么

示例

基于ElasticSearch Analyzer的使用規(guī)則是什么

四、中文分詞

中文分詞的難點(diǎn):

中文句子,切成一個(gè)一個(gè)詞(不是一個(gè)一個(gè)字)。英文中,單詞有自然的空格作為分隔。一句中文,在不同的上下文,有不同的理解。

1)ICU Analyzer

原理

基于ElasticSearch Analyzer的使用規(guī)則是什么

演示(需要提前安裝 ICU Analyze 插件)

基于ElasticSearch Analyzer的使用規(guī)則是什么

2)IK

基于ElasticSearch Analyzer的使用規(guī)則是什么

3) THULAC

基于ElasticSearch Analyzer的使用規(guī)則是什么

讀到這里,這篇“基于ElasticSearch Analyzer的使用規(guī)則是什么”文章已經(jīng)介紹完畢,想要掌握這篇文章的知識(shí)點(diǎn)還需要大家自己動(dòng)手實(shí)踐使用過(guò)才能領(lǐng)會(huì),如果想了解更多相關(guān)內(nèi)容的文章,歡迎關(guān)注億速云行業(yè)資訊頻道。

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI