Elasticsearch分析

當在搜索操作期間處理查詢時,任何索引中的內容由分析模組分析。該模組由分析器,分詞器,分詞器篩檢程式和字元篩檢程式組成。 如果沒有定義分析器,則默認情況下註冊內置的分析器,分詞器,分詞器篩檢程式和字元篩檢程式到分析模組。例如。

POST http://localhost:9200/pictures

請求正文

{
   "settings": {
      "analysis": {
         "analyzer": {
            "index_analyzer": {
               "tokenizer": "standard", "filter": [
                  "standard", "my_delimiter", "lowercase", "stop",
                     "asciifolding", "porter_stem"
               ]
            },

            "search_analyzer": {
               "tokenizer": "standard", "filter": [
                  "standard", "lowercase", "stop", "asciifolding", "porter_stem"
               ]
            }
         },

         "filter": {
            "my_delimiter": {
               "type": "word_delimiter",
               "generate_word_parts": true,
               "catenate_words": true,
               "catenate_numbers": true,
               "catenate_all": true,
               "split_on_case_change": true,
               "preserve_original": true,
               "split_on_numerics": true,
               "stem_english_possessive": true
            }
         }
      }
   }
}

回應

{"acknowledged":true}

分析器

分析器由令牌器和可選的令牌篩檢程式組成。這些分析器在具有邏輯名的分析模組中註冊,可以在映射定義或某些API中引用它們。有許多默認分析儀如下 -

編號 分析器 描述
1 標準分析器(標準) 為此分析儀設置停止字詞和最大令牌長度。默認情況下,停用字詞列表為空,最大標記長度(max_token_length)為255。
2 簡單分析器(簡單) 這個分析器由小寫分詞器組成。
3 空白分析器(空格) 這個分析器由空白分詞器組成。
4 關鍵字分析器(關鍵字) 此分析器將整個流標記為單個令牌。 它可以用於郵遞區號。
5 模式分析器(模式) 該分析器主要處理正則運算式。可以在此分析器中設置像小寫字母,模式,標誌,無用詞的設置。
6 語言分析器 該分析器處理像印第安語,阿拉伯語,荷蘭語等語言。
7 雪球分析器(雪球) 此分析儀使用標準分段器,帶有標準濾波器,小寫字母篩檢程式,停止篩檢程式和雪球篩檢程式。
8 停止分析器(停止) stopwordsstopwords_path可以配置。 默認情況下,停用詞初始化為英語停用詞,stopwords_path包含具有停用詞的文本檔的路徑。
9 自定義分析器(自定義) 此分析器用於創建帶有可選令牌篩檢程式和字元篩檢程式的令牌化器的定制分析器。可以在此分析器中配置像tokenizerfilterchar_filterposition_increment_gap等設置。

令牌器/標記生成器

令牌器用於從Elasticsearch中的文本生成令牌。 通過考慮空白或其他標點符號,文本可以分解成令牌。 Elasticsearch有大量內置的分詞器,可以在自定義分析器中使用。

編號 標記生成器 描述
1 標準標記生成器(標準) 這是建立在基於語法的標記生成器,以及max_token_length可以配置為這個標記生成器。
2 邊緣NGram標記生成器(edgeNGram) 可以為此分詞器設置如:min_grammax_gramtoken_chars的設置。
3 關鍵字標記生成器(關鍵字) 這將生成整個輸入作為輸出,可以為此設置buffer_size
4 字母標記生成器 這將捕獲整個單詞,直到遇到一個非字母字元。
5 小寫標記生成器(小寫) 這與標記生成器相同,但是在創建令牌之後,會將它們更改為小寫。
6 NGram令牌器(nGram) 類似:min_gram(默認值為1),max_gram(默認值為2)和token_chars等設置可以為這個分詞器。
7 空格標記符(空格) 這將根據空格分隔文本。
8 模式分詞器(模式) 這使用正則運算式作為標記分隔符號。可以為此分詞器設置模式,標誌和組設置。
9 UAX電子郵件URL令牌(uax_url_email) 這使用正則運算式作為標記分隔符號。 可以為此分詞器設置模式,標誌和組設置。
10 這與標準分詞器工作方式相同,但它將電子郵件和URL作為單個標記。
11 路徑層次化標記分隔符號(path_hierarchy) 此標記器生成輸入目錄路徑中存在的所有可能的路徑。可用於此分詞器的設置是分隔符號(默認為/),replacementbuffer_size(默認為1024),reverse(默認為false)和skip(默認為0)。
12 經典分詞器(經典) 這在基於令牌的語法基礎上工作。可以為此分詞器設置:max_token_length
13 泰語分詞器(泰語) 此分詞器用於泰語,並使用內置的泰語分詞演算法。

令牌篩檢程式

令牌篩檢程式從令牌化器接收輸入,然後這些篩檢程式可以修改,刪除或添加輸入的文本。 Elasticsearch提供了大量內置的令牌篩檢程式。它們中的大多數已經在前面的部分中解釋。

字元篩檢程式

這些篩檢程式在分詞器之前處理文本。 字元篩檢程式查找特殊字元或html標籤或指定的模式,然後刪除或更改為適當的詞,如’&‘到和,刪除html標記標記。 這裏是同義詞在synonym.txt中指定的分析器的示例 -

{
   "settings":{
      "index":{
         "analysis":{
            "analyzer":{
               "synonym":{
                  "tokenizer":"whitespace", "filter":["synonym"]
               }
            },

            "filter":{
               "synonym":{
                  "type":"synonym", "synonyms_path":"synonym.txt", "ignore_case":"true"
               }
            }
         }
      }
   }
}

上一篇: Elasticsearch映射 下一篇: Elasticsearch入門教學