在資料庫資料非常龐大的時候,而且實時有新的資料插入,如果我們不更新索引,新的資料就search不到,全部重新建立索引又很消耗資源,在這種情況下我們就需要使用「
主索引+
增量索引
」的思路來實現實時更新的功能。
因為這時我們有了主索引和增量索引,主索引只需在每天凌晨更新,而增量索引的更新頻率設定的很短,這樣使用者在搜尋的時候,可以同時在這兩個索引裡查詢。
首先建立乙個計數器:
1.先在
mysql
中插入乙個計數表
create table sph_counter(
counter_id integer primary key not null,
max_doc_id integer not null
);2.再次修改配置檔案,在主資料來源裡面我們要改預查詢語句:
vi /usr/local/coreseek/etc/csft.conf
source main
source delta : main //繼承資料來源
index mian //主索引
index delta : main //增量索引
3.重建增量索引
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf delta
用/usr/local/coreseek/bin/search工具來檢索,查詢主索引中檢索結果為0,而新資料庫在增量索引中檢索到。
4.實時更新索引建2個
shell
指令碼,乙個主索引指令碼、乙個增量索引指令碼
vi main.sh
#!/bin/sh
/usr/local/coreseek/bin/indexer main –c /usr/local/coreseek/etc/csft.conf >> /usr/local/coreseek/var/log/main.log
vi delta.sh
#!/bin/sh
/usr/local/coreseek/bin/indexer delta –c /usr/local/coreseek/etc/csft.conf –rotate>> /usr/local/coreseek/var/log/delta.log
加入到計畫任務裡面:每5
分鐘重新增量索引;每天凌晨
2點重建主索引
*/5 * * * * /usr/local/coreseek/etc/delta.sh > /dev/null 2>&1
0 2 * * * /usr/local/coreseek/etc/main.sh > /dev/null 2>&1
加任務:
crontab -e
0 */1 * * * command
0 */2 * * * command
查詢任務是否加了:
crontab -l
0 */1 * * * command
0 */2 * * * command
sphinx主索引,增量索引建立
相關命令及步驟 建立主索引 usr local coreseek bin indexer c usr local coreseek etc csft.conf all 建立增量索引 1.建立測試資料表以及資料 2.修改配置檔案 主索引源 sql query pre 增量索引源 sql query p...
sphinx增量索引和主索引來實現索引的實時更新
專案中文章的資訊內容因為持續有新增,而文章總量的基數又比較大,所以做搜尋的時候,用了主索引 增量索引這種方式來實現索引的實時更新。實現原理 1.新建一張表,記錄一下上一次已經建立好索引的最後一條記錄的id 2.當索引時,然後從資料庫中取出所有id大於上面那個sphinx中的那個id的資料,這些就是新...
sphinx增量索引和主索引來實現索引的實時更新
專案中文章的資訊內容因為持續有新增,而文章總量的基數又比較大,所以做搜尋的時候,用了主索引 增量索引這種方式來實現索引的實時更新。實現原理 1.新建一張表,記錄一下上一次已經建立好索引的最後一條記錄的id 2.當索引時,然後從資料庫中取出所有id大於上面那個sphinx中的那個id的資料,這些就是新...