欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

基于ElasticSearch Analyzer的使用規(guī)則詳解

 更新時間:2021年07月12日 10:23:17   作者:wanson2015  
這篇文章主要介紹了基于ElasticSearch Analyzer的使用規(guī)則,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

analyzer的使用規(guī)則

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

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

例如為 my_index 新增一個字段:

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

現(xiàn)在我們就可以通過使用 analyze API 來分析單詞 Foxes ,進(jìn)而比較 english_title 字段和 title 字段在索引時的分析結(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)分析器,返回詞項 foxes 。
  2. 字段 english_title ,使用 english 英語分析器,返回詞項 fox 。

這意味著,如果使用底層 term 查詢精確項 fox 時, english_title 字段會匹配但 title 字段不會。

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

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

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

(title:foxes english_title:fox)

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

默認(rèn)分析器

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

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

  • 字段映射里定義的 analyzer ,否則
  • 索引設(shè)置中名為 default 的分析器,默認(rèn)為
  • standard 標(biāo)準(zhǔn)分析器

在搜索時,順序有些許不同:

  • 查詢自己定義的 analyzer ,否則
  • 字段映射里定義的 analyzer ,否則
  • 索引設(shè)置中名為 default 的分析器,默認(rèn)為
  • standard 標(biāo)準(zhǔn)分析器

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

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

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

  • 查詢自己定義的 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)的過程。

Analysis 是通過Analyzer來實現(xiàn)的。

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

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

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

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

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

在這里插入圖片描述

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

1) _analyzer API 三種使用方法

2) Standard Analyzer

原理

在這里插入圖片描述

示例

在這里插入圖片描述

3)Simple Analyzer

原理

在這里插入圖片描述

示例

在這里插入圖片描述

4)Whitespace Analyzer

原理

在這里插入圖片描述

示例

在這里插入圖片描述

5)Stop Analyzer

原理

在這里插入圖片描述

示例

在這里插入圖片描述

6)Keyword Analyzer

原理

在這里插入圖片描述

示例

在這里插入圖片描述

7)Pattern Analyzer

原理

在這里插入圖片描述

示例

在這里插入圖片描述

8)Language Analyzer

支持按語言分詞

示例

在這里插入圖片描述

四、中文分詞

中文分詞的難點:

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

1)ICU Analyzer

原理

在這里插入圖片描述

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

在這里插入圖片描述

2)IK

在這里插入圖片描述

3) THULAC

在這里插入圖片描述

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • Java線程池之線程復(fù)用原理全面解析

    Java線程池之線程復(fù)用原理全面解析

    這篇文章主要介紹了Java線程池之線程復(fù)用原理,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • mybatis-plus主鍵策略生成失敗的解決

    mybatis-plus主鍵策略生成失敗的解決

    本文主要介紹了mybatis-plus主鍵策略生成失敗的解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • 深入解讀Java代碼組織中的package包結(jié)構(gòu)

    深入解讀Java代碼組織中的package包結(jié)構(gòu)

    這篇文章主要介紹了Java代碼組織中的package包結(jié)構(gòu),是Java入門學(xué)習(xí)中的基礎(chǔ)知識,需要的朋友可以參考下
    2016-03-03
  • Maven中央倉庫發(fā)布的實現(xiàn)方法

    Maven中央倉庫發(fā)布的實現(xiàn)方法

    最近做了個項目,希望能夠上傳到maven中央倉庫,給更多的人使用,于是就產(chǎn)生了這次項目發(fā)布經(jīng)歷。感興趣的可以一起來參考一下
    2021-06-06
  • java 使用正則表達(dá)式去除前后空格

    java 使用正則表達(dá)式去除前后空格

    這篇文章主要介紹了java 使用正則表達(dá)式去除前后空格,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-04-04
  • 基于Java編寫簡單的Excel工具類

    基于Java編寫簡單的Excel工具類

    這篇文章主要為大家詳細(xì)介紹了如何基于Java編寫簡單的Excel工具類,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,有需要的小伙伴可以參考下
    2024-02-02
  • redis與ssm整合方法(mybatis二級緩存)

    redis與ssm整合方法(mybatis二級緩存)

    本文給大家介紹redis與ssm整合方法(mybatis二級緩存)。主要是利用redis去做mybatis的二級緩存,mybaits映射文件中所有的select都會刷新已有緩存,如果不存在就會新建緩存,所有的insert,update操作都會更新緩存
    2017-12-12
  • JavaMail實現(xiàn)帶附件的郵件發(fā)送

    JavaMail實現(xiàn)帶附件的郵件發(fā)送

    這篇文章主要為大家詳細(xì)介紹了JavaMail實現(xiàn)帶附件的郵件發(fā)送,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-08-08
  • spring boot 自動更新靜態(tài)文件和后臺代碼的實例

    spring boot 自動更新靜態(tài)文件和后臺代碼的實例

    下面小編就為大家分享一篇spring boot 自動更新靜態(tài)文件和后臺代碼的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2017-12-12
  • Java基于TCP協(xié)議socket網(wǎng)絡(luò)編程的文件傳送的實現(xiàn)

    Java基于TCP協(xié)議socket網(wǎng)絡(luò)編程的文件傳送的實現(xiàn)

    這篇文章主要介紹了Java基于TCP協(xié)議socket網(wǎng)絡(luò)編程的文件傳送的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12

最新評論