當前位置:成語大全網 - 書法字典 - ES索引解析(倒排索引

ES索引解析(倒排索引

什麽是倒排索引?首先要了解索引表:以關鍵字為關鍵字,以關鍵字位置屬性為值組成的表。因為表的值不是由鍵決定的,而是由值的屬性值決定鍵的位置,所以叫做倒排索引,有倒排索引的文件叫做倒排文件。壹般來說,倒排索引就像壹個圖書目錄,通過它我們可以準確地找到相應的數據。下面介紹lucene倒排索引的結構和算法。

關鍵詞有兩種獲取方式,1。根據空格分隔得到所有字符。2.過濾文檔中無意義的詞,得到關鍵詞。此外,單詞的時態、大小寫、同義詞、標點符號都會得到相應的處理,不同的分詞器在索引文檔時做不同的操作。

例1:湯姆住在張掖,我也住在張掖。

關鍵詞:1:[湯姆][住][在][張掖][我][住][張掖]

他曾經住在上海

關鍵詞二:[他][現場][上海]

根據關鍵詞可以確定關鍵詞所在的文章編號,關鍵詞在文章中出現的頻率以及關鍵詞在文章中出現的位置(根據上面得到的關鍵詞可以知道,索引的時候,要麽是所有的字符,要麽是關鍵詞都被索引,lucene采用的是關鍵詞索引的方式,會節省很多空間)。具體指標如下:

1)字典文件:每個關鍵字,指向頻率文件和位置文件的指針,以及filed(用於表示信息位置,每個關鍵字有壹個或多個字段)信息。

2)頻率文件:每個文件中關鍵字出現頻率的文件。

3)位置文件:關鍵詞所在的文章中的位置文件。

關鍵詞壓縮為;比如“我愛妳中國”=“另外,數字的壓縮只記錄與前壹個數字的區別,比如,當前文章號是11890,前壹個文章號是11870。壓縮後只需要誤差20,大大減少了存儲空間。

es查詢操作使用倒排索引,數據聚集和排序需要使用正排索引。這裏我們引入正交索引。

正交索引是指對文檔中每個字段的值進行排序,實際上就是文檔值。例如:

示例:

Doc1: { "姓名":"張三","年齡":27,"性別":"男" }

Doc2: {“姓名”:“李四”,“年齡”:30,“性別”:“女”}

正交索引:

文件名稱年齡性別

Doc1插孔27公

醫生2湯姆30歲女性

正交索引的使用場景有排序、聚合、過濾等。

註意:

要聚合分段字段,需要將fielddata設置為true,否則將提示您打開fielddata並將正交索引加載到內存中,但會出現錯誤。

Doc值保存在磁盤上。此時如果內存足夠,os會自動緩存在內存中,性能依然會很高。如果沒有足夠的內存,操作系統會將其寫入磁盤。

倒排索引和正排索引的介紹到此結束。如果有幫助,請關註!謝謝妳