coreseek實時索引更新有兩種選擇:
1.使用基於磁碟的索引,手動分割槽,然後定期重建較小的分割槽(被稱為「增量」)。通過盡可能的減小重建部分的大小,可以將平均索引滯後時間降低到30~60秒.在0.9.x版本中,這是唯一可用的方法。在乙個巨大的文件集上,這可能是最有效的一種方法
2.版本1.x(從版本1.10-beta開始)增加了實時索引(簡寫為rt索引)的支援,用於及時更新全文資料。在rt索引上的更新,可以在1~2毫秒(0.001-0.002秒)內出現在搜尋結果中。然而,rt實時索引在處理較大資料量的批量索引上效率並不高。
這篇我們只要是增量索引
基本思路是設定兩個資料來源和兩個索引,對很少更新或根本不更新的資料建立主索引,而對新增文件建立增量索引
在配置檔案中定義了主索引和增量索引之後,不能直接用indexer –config d:\coreseek\csft.conf –all,再新增資料到資料庫中,再用indexer –config d:\coreseek\csft.confg main delta –rotate來弄(我居然這樣弄了兩次)。正確的步驟為:
1.建立主索引
:indexer –cd:\coreseek\csft.conf --all
2.新增資料
3.再建立增量索引
:indexer –cd:\coreseek\csft.conf delta --rotate
4.合併索引
:indexer –cd:\coreseek\csft.conf --merge main delta –rotate(為了防止多個關鍵字指向同乙個文件加上
--merge-dst-range deleted 0 0)
增量配置檔案如下:
[plain]view plain
copy
#增量索引
source main
source delta : main
#index定義
index main
index delta : main
#全域性index定義
indexer
#searchd服務定義
searchd
注意問題
:如果我的主索引為
50w條我前天建立的
,我昨天增加了
10w條的資料
,並且建立了增量索引還和主索引合併了
,我今天增加了
10w的資料並且建立增量索引而且也和主索引合併了
,在這兩天內我是沒有重新建立主索引的
,問題來了:昨天是對
10w資料進行建立
,今天就是
20w的資料建立
,並且這
20w資料中有
10w資料其實在主索引中了
,這個是非常可怕的
?解決方案:
1.一天建立一次主索引
2.在不考慮重新建立主索引的時候,在新增增量索引的時候用sql_query_post_index來改變maxid值我是windows下面手動輸入**成功(不知道用指令碼的時候會怎麼樣)
3.在不考慮重新建立主索引的時候,在合併索引的時候,用指令碼鏈結資料庫直接去修改(可以檢視:
sphinx 實時索引更新
1 實時索引更新 有這麼一種常見的情況 整個資料集非常大,以至於難於經常性的重建索引,但是每次新增 的記錄卻相當地少。乙個典型的例子是 乙個論壇有1000000個已經歸檔的帖子,但每天只 有1000個新帖子。在這種情況下可以用所謂的 主索引 增量索引 main delta 模式來實現 近實時 的 索...
sphinx 實時索引更新 php sir
1 實時索引更新 有這麼一種常見的情況 整個資料集非常大,以至於難於經常性的重建索引,但是每次新增 的記錄卻相當地少。乙個典型的例子是 乙個論壇有1000000個已經歸檔的帖子,但每天只 有1000個新帖子。在這種情況下可以用所謂的 主索引 增量索引 main delta 模式來實現 近實時 的 索...
sphinx主索引和增量索引實時更新
在資料庫資料非常龐大的時候,而且實時有新的資料插入,如果我們不更新索引,新的資料就search不到,全部重新建立索引又很消耗資源,在這種情況下我們就需要使用 主索引 增量索引 的思路來實現實時更新的功能。因為這時我們有了主索引和增量索引,主索引只需在每天凌晨更新,而增量索引的更新頻率設定的很短,這樣...