關於全文索引的動態維護

2021-04-13 11:07:42 字數 1866 閱讀 6708

關於全文索引的動態維護

現在最通用的全文檢索的方法都是倒排序索引結構。當資料量很大的時候,這種倒排序索引結構在查詢時能有很好的效能。

全文索引的動態維護主要是指在已經建好的索引的基礎上,不斷地進行insert/update/delete操作,並且需要快速的對新加入的資料進行query,所以這就對索引的維護提出了更高的效能要求。

全文索引的動態維護分為 on-line 和off-line兩種維護的方法。on-line的技術相對複雜,大部分的**著作主要是將這一方面的。特別是在網際網路快速發展的今天,對全文索引進行更快,更有效的維護,可以讓使用者的查詢更加的方便,快捷。

全文索引的動態維護的研究主要是對新增的資料建立索引,然後和已有索引如何處理這樣的乙個關係的研究。一般來說,維護的代價小,則查詢的效能就會差一些。如果想查詢的效能非常好,那可能維護得代價就會大。全文索引動態維護的研究就是研究在建立索引和查詢索引的效能中間尋找乙個比較好的平衡點。

關於insert的解決方法主要有下面幾種:

1.刪除已有的索引,進行完全重建。這種方法需要對已有的資料重新建立索引,時間花銷相對比較大,但是也不是沒有優點。當資料量相對小的時候進行這種方法,反而是個很好的選擇辦法。

詳細的可以參考:nicholas lester,justin zobel,alistair moffat的** 《fast on­line index construction by geometric partitioning》

2.立刻歸併。對新增的索引和硬碟上的索引一起進行歸併。在這種情況下就算新增的資料很小也會在歸併上花費大量的時間。

3.in­place update。主要是講在每個term 的posting-list中預儲存一段空間,將新增的posting-list加到這預儲存的空間中,如果空間不夠,就需要重新的進行分配,進行拷貝。當然這中間也有一些演算法可以優化。

詳細的情況大家可以參考:nicholas lester,justin zobel,alistair moffat的** 《fast on­line index construction by geometric partitioning》

4.進行歸併,但不是立刻歸併,而是設定一定的標準,到達一定條件進行歸併。這種方法用的比較多。研究的重點就是何時進行歸併?採用什麼樣的歸併演算法可以讓效能更好一些

關於delete的索引操作優化

關於delete的操作,大都採用這樣的乙個策略:將文章的標號設定為deleted,查詢的時候略過這些刪除的文章,但是,久而久之,索引中存在大量地無用資訊,空間上利用率不高,在歸併和查詢時會影響效能。有這樣乙個公式 :

ρ=delete的索引資訊/所有的索引資訊

ρ=0,最好的查詢效能。

ρ=1,索引維護的效能最高。

我看到的關於這部分的優化有兩個思想:

1.不太現實的理論想法(on-the-fly garbage collection):

根據ρ的變化來動態的決定作怎樣的處理。

詳細的內容請參考:《indexing time vs. query time tradeoffs in dynamic information retrieval systems》

stefan b¨ uttcher and charles l. a. clarke

university of waterloo, canada

2.就是定期的或者提供給使用者一定的介面,讓使用者來做這個操作。比如sql server就提供了一定的sql語句,讓使用者根據自己的當前操作來決定是否需要**索引中的碎片。這種方式目前用的比較多。

mysql全文索引的坑 MySQL全文索引問題

我有乙個包含以下資料的 文章 mysql select from articles id title body 1 mysql tutorial dbms stands for database 2 how to use mysql well after you went through a 3 o...

mysql 全文索引 重建 關於MySql全文索引

從 mysql 4.0 開始就支援全文索引功能,但是 mysql 預設的最小索引長度是 4。如果是英文預設值是比較合理的,但是中文絕大部分詞都是2個字元,這就導致小於4個字的詞都不能被索引,全文索引功能就形同虛設了。國內的空間商大部 分可能並沒有注意到這個問題,沒有修改 mysql 的預設設定。為什...

建立全文索引

建立全文索引 在進行全文檢索之前,必須先建立和填充資料庫全文索引。為了支援全文索引操作,sql server 7.0新增了一些儲存過程和transact sql語句。使用這些儲存過程建立全文索引的具體步驟如下 括號內為呼叫的儲存過程名稱 1.啟動資料庫的全文處理功能 sp fulltext data...