sphinx主索引和增量索引實時更新

2021-07-15 15:03:44 字數 1508 閱讀 5147

在資料庫資料非常龐大的時候,而且實時有新的資料插入,如果我們不更新索引,新的資料就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的資料,這些就是新...