1 實時索引更新
有這麼一種常見的情況:整個資料集非常大,以至於難於經常性的重建索引,但是每次新增
的記錄卻相當地少。乙個典型的例子是:乙個論壇有1000000個已經歸檔的帖子,但每天只
有1000個新帖子。
在這種情況下可以用所謂的「主索引+增量索引」(main+delta)模式來實現「近實時」的
索引更新。
這種方法的基本思路是設定兩個資料來源和兩個索引,對很少更新或根本不更新的資料建立主
索引,而對新增文件建立增量索引。在上述例子中,那1000000個已經歸檔的帖子放在主索
引中,而每天新增的1000個帖子則放在增量索引中。增量索引更新的頻率可以非常快,而
文件可以在出現幾分種內就可以被檢索到。
確定具體某一文件的分屬那個索引的分類工作可以自動完成。乙個可選的方案是,建立乙個
計數表,記錄將文件集分成兩部分的那個文件id,而每次重新構建主索引時,這個表都會被更新。
示例 全自動的即時更新
# in mysql
create table sph_counter
(counter_id integer primary key not null,
max_doc_id integer not null
);# in sphinx.conf
source main
source delta : main
index main
# note how all other settings are copied from main,
# but source and path are overridden (they must be)
index delta : main
2 索引合併
合併兩個已有的索引比重新對所有資料做索引更有效率,而且有時候必須這樣做(例如在「
主索引+增量索引」分割槽模式中應合併主索引和增量索引,而不是簡單地重新索引「主索引
對應的資料)。因此indexer有這個選項。合併索引一般比重新索引快,但在大型索引上仍
然不是一蹴而就。基本上,待合併的兩個索引都會被讀入記憶體一次,而合併後的內容需要寫
入磁碟一次。例如,合併100gb和1gb的兩個索引將導致202gb的io操作(但很可能還
是比重新索引少)
基本的命令語法如下:
indexer --merge dstindex srcindex [--rotate]
srcindex的內容被合併到dstindex中,因此只有dstindex索引會被改變。若
dstindex已經被searchd用於提供服務,則--rotate引數是必須的。最初設計的使用模式是,
將小量的更新從srcindex合併到dstindex中。因此,當屬性被合併時,一旦出現了重
復的文件id,srcindex中的屬性值更優先(會覆蓋dstindex中的值)。不過要注意,
「舊的」關鍵字並不會被自動刪除。例如,在dstindex中有乙個叫做「old」的關鍵字與文
檔123相關聯,而在srcindex中則有關鍵字「new」與同乙個文件相關,那麼在合併後用
這兩個關鍵字都能找到文件123。您可以給出乙個顯式條件來將文件從dstindex中移除,
以便應對這種情況,相關的開關是--merge-dst-range:
indexer --merge main delta --merge-dst-range deleted 0 0
這個開關允許您在合併過程中對目標索引實施過濾。過濾器可以有多個,只有滿足全部過濾
條件的文件才會在最終合併後的索引中出現。在上述例子中,過濾器只允許「deleted」為0
的那些條件通過,而去除所有標記為已刪除(「deleted」)的記錄(可以通過呼叫
updateattributes() 設定文件的屬性)。
sphinx 實時索引更新 php sir
1 實時索引更新 有這麼一種常見的情況 整個資料集非常大,以至於難於經常性的重建索引,但是每次新增 的記錄卻相當地少。乙個典型的例子是 乙個論壇有1000000個已經歸檔的帖子,但每天只 有1000個新帖子。在這種情況下可以用所謂的 主索引 增量索引 main delta 模式來實現 近實時 的 索...
Sphinx實時索引
1,首先建立乙個表用來儲存主索引和增量索引的id值 create table if not exists sph counter s id int 10 unsigned not null auto increment,p id int 11 not null,primary key s id 2,...
Sphinx 實時索引
index rtsearchd 實時索引不需要indexer,直接開啟searchd。usr local sphinx bin searchd c usr local sphinx etc csft rt.conf sphinx的實時索引配置本身並不需要資料來源 source 它的資料是要通過程式利...