sphinx-主索引增量索引和實時索引

實現原理:

首先創建一個計數器:

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{

sql_query_pre = SET NAMES utf8

sql_query_pre = SET SESSION query_cache_type=OFF

sql_query_pre = REPLACE INTO sph_counter SELECT 1, MAX(id) FROM documents

sql_query = SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content FROM documents /

WHERE id<=( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 )

… //其他可以默認

}

source delta : main //繼承數據源

{

sql_query_pre = SET NAMES utf8

sql_query_pre = SET SESSION query_cache_type=OFF

sql_query_pre =

   sql_query = SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content FROM documents /

WHERE id>( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 )

}

index mian //主索引

{

source = main

Path=/usr/local/coreseek/var/data/main

}

index delta : main //增量索引

{

source = delta 

Path=/usr/local/coreseek/var/data/delta

}

3.重建增量索引

/usr/local/coreseek/bin/indexer -c  /usr/local/coreseek/etc/csft.conf  delta

用/usr/local/coreseek/bin/search工具來檢索,查詢主索引中檢索結果爲0,而新數據庫在增量索引中檢索到。

4.實時更新索引

2shell腳本,一個主索引腳本、一個增量索引腳本

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章