1. 程式人生 > >ElasticStack學習(五):ElasticSearch索引與分詞

ElasticStack學習(五):ElasticSearch索引與分詞

一、正排索引與倒排索引

1、什麼是正排索引呢?

  以一本書為例,一般在書的開始都會有書的目錄,目錄裡面列舉了一本書有哪些章節,大概有哪些內容,以及所對應的頁碼數。這樣,我們在查詢一些內容時,就可以通過目錄來定位到這些內容大概在哪頁。因此,書的目錄就可以稱之為正排索引(目錄頁)。

2、什麼時倒排索引呢?

  還是以一本書為例,在有些書的最後,會有以詞為單位的列表,指明瞭相應的詞分別出現在了哪些頁中,而這樣的列表就稱之為倒排索引(索引頁)。

3、兩者在搜尋引擎中的對比

  正排索引:文件ID到文件內容和單詞的關聯;

  倒排索引:單詞到文件ID的關聯;

如下表所示:

文件ID 文件內容
1 mastering elasticsearch
2 elasticsearch server
3 elasticsearch stack

 

 

 

 

 

單詞 出現次數 文件ID:出現位置
mastering 1 1:0
elasticsearch 3 1:1,2:0,3:0
server 1 2:1
stack 1 3:1

 

 

 

 

 

 

 

 上述兩表就是正排索引與倒排索引的簡單結構說明。

4、倒排索引的組成

倒排索引由兩部分組成:

  1)單詞詞典:它記錄了所有文件的單詞,同時記錄了單詞到倒排列表的關聯關係。單詞詞典一般比較大,可以通過B+樹或雜湊拉鍊法實現,以滿足高效能的插入與查詢。

  2)倒排列表:它記錄單詞所對應的文件組合體,主要是由倒排索引項組成的。

    倒排索引項的內容包括:

      a)文件ID;

      b)詞頻(Term Frequency),代表單詞在文件中出現的次數,用於相關性打分;

      c)位置(Position),表示單詞在文件中分詞的位置,用於語句搜尋;

      d)偏移(Offset),記錄單詞開始和結束位置,用於實現高亮顯示;

 

二、分詞與分詞器

1、分詞:文字分析就是把全文轉換成一系列單詞(term/token)的過程,也叫做分詞。

2、分詞器:分詞是通過分詞器來實現的,它是專門處理分詞的元件。可以使用ElasticSearch內建的分詞器,也可以按需定製化分詞器。

  因此,除了在資料寫入時用分詞器轉換詞條,在匹配查詢語句時,也需要用相同的分詞器對查詢語句進行分析。 

  分詞器由三部分組成:

  1)Character Filters:它的主要作用是對原始文字進行處理,例如去除HTML標籤;

  2)Tokenizer:主要作用是按照規則來切分單詞;

  3)Token Filter:將切分好的單詞進行加工,例如:小寫轉換、刪除停用詞、增加同義詞;

  ElasticSearch內建瞭如下分詞器:

  1)Standard Analyzer:預設分詞器,按詞切分,轉小寫處理;

  

  2)Simple Analyzer:按照非字母切分(符號被過濾),轉小寫處理;

  

  3)Stop Analyzer:停用詞過濾(is/a/the),轉小寫處理;

  

  4)WhiteSpace Analyzer:按照空格切分,轉小寫處理;

  

  5)Keyword Analyzer:直接將輸入當作輸出,不分詞;

  

  6)Pattern Analyzer:正則表示式分詞,預設\W+(非字元分隔);

  

  7)Language:提供了30多種常見語言的分詞器;

  

  8)Custom Analyzer:自定義分詞器;

3、中文分詞

  1)我們採用analysis-icu外掛進行中文分詞,可通過命令列:ElasticSearch-plugin install analysis-icu來安裝此外掛。該外掛提供了Unicode支援,可以更好的支援亞洲語言。如下圖所示:

  

  2)社群中還有其他很好的分詞器,如下:

    a)IK:支援自定義詞庫,支援熱更新分詞字典;下載地址:https://github.com/medcl/elasticsearch-analysis-ik

    b)THULAC:THU Lexucal Analyzer for Chinese,由清華大學自然語言處理和社會人文計算實驗器出的一套中文分詞器;下載地址:https://github.com/microbun/elasticsearch-thulac-plugin

 

    大家可關注我的公眾號

    

     知識學習來源:《Elasticsearch核心技術與實戰》&n