中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

sphinx中怎么更新增量索引

這期內(nèi)容當(dāng)中小編將會(huì)給大家?guī)?lái)有關(guān)sphinx中怎么更新增量索引,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

按需策劃設(shè)計(jì)可以根據(jù)自己的需求進(jìn)行定制,成都做網(wǎng)站、成都網(wǎng)站制作構(gòu)思過(guò)程中功能建設(shè)理應(yīng)排到主要部位公司成都做網(wǎng)站、成都網(wǎng)站制作的運(yùn)用實(shí)際效果公司網(wǎng)站制作網(wǎng)站建立與制做的實(shí)際意義

實(shí)現(xiàn)思路:

需要準(zhǔn)備:1》建立一張表,記錄數(shù)據(jù)最大id值。2》兩個(gè)索引

1.先在MySQL中插入一個(gè)計(jì)數(shù)表和兩個(gè)索引表

CREATE TABLE sph_counter(    counter_id INTEGER PRIMARY KEY NOT NULL,    max_doc_id INTEGER NOT NULL);

2.修改sphinx.conf
source main_src{

       type                = mysql
       sql_host            = localhost
       sql_user            = yourusername
       sql_pass            = yourpassword
       sql_db              = test   //你所用的數(shù)據(jù)庫(kù)
       sql_port            = 3306 //所用端口,默認(rèn)是3306
       sql_query_pre       = SET NAMES utf8
       sql_query_pre       = SET SESSION query_cache_type=OFF       
       #下面的語(yǔ)句是更新sph_counter表中的 max_doc_id。       
       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 ) 
}

#注意:delta_src 中的sql_query_pre的個(gè)數(shù)需和main_src 對(duì)應(yīng),否則可能搜索不出相應(yīng)結(jié)果
source delta_src: main_src{
         sql_ranged_throttle = 100
         sql_query_pre       = SET NAMES utf8
         sql_query_pre       = SET SESSION query_cache_type=OFF
         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 main {
       source           = main_src
       path             = /path/to/main
       #example:   /usr/local/sphinx/var/data/main
       charset_type     = utf-8    #這個(gè)是支持中文必須要設(shè)置的
       #中文檢索路徑
       chinese_dictionary =/usr/local/mmseg3/etc/       
}

#delta可全部復(fù)制主索引,然后更改source 和path如下
#增量索引
index delta: main {
         source = delta_src
         path     = /path/to/delta
         # example:  /usr/local/sphinx/var/data/delta…
         #中文檢索路徑         
       chinese_dictionary =/usr/local/mmseg3/etc/       
}

其它的配置可都用默認(rèn)的,如果你設(shè)置了分布式檢索的索引,那么更改下對(duì)應(yīng)的索引名稱即可。

3.重新建立索引:

 /usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/sphinx.conf --all --rotate
接下來(lái)的問(wèn)題是如何讓增量索引與主索引合并

4.索引合并
合并兩個(gè)已有索引 有時(shí)比 重新索引所有數(shù)據(jù)有效,雖然,索引合并時(shí),待合并的兩個(gè)索引都會(huì)被讀入內(nèi)存一次,合并后的內(nèi)容需寫入磁盤一次,即,合并100GB和1GB的兩個(gè)所以,將導(dǎo)致202GB的IO操作
命令原型:  indexer --merge DSTINDEX  SRCINDEX [--rotate]   將SRCINDEX合并到 DSTINDEX ,所以只有DSTINDEX會(huì)改變,如果兩個(gè)索引都正在提供服務(wù),那么 -- rotate 參數(shù)是必須的。例如:將delta合并到main中。
indexer --merge main delta   

5.索引自動(dòng)更新
需要使用到腳本。
建立兩個(gè)腳本:build_main_index.sh 和 build_delta_index.sh.


build_main_index.sh:
#!/bin/sh
# 停止正在運(yùn)行的searchd
/usr/local/sphinx/bin/searchd -c /usr/local/sphinx/etc/mersphinx.conf  --stop >> /usr/local/sphinx/var/log/sphinx/searchd.log
#建立主索引
/usr/local/sphinx/bin/indexer -c  /usr/local/sphinx/etc/mersphinx.conf main >> /usr/local/sphinx/var/log/sphinx/mainindex.log
#啟動(dòng)searchd守護(hù)程序
/usr/local/sphinx/bin/searchd >> /usr/local/sphinx/var/log/sphinx/searchd.log

build_delta_index.sh

#!/bin/sh
#停止sphinx服務(wù),將輸出重定向
/usr/local/sphinx/bin/searchd –stop >> /usr/local/sphinx/var/log/sphinx/searchd.log
#重新建立索引delta ,將輸出重定向
/usr/local/sphinx/bin/indexer delta –c /usr/local/sphinx/etc/sphinx.conf>>/usr/lcoal/sphinx/var/log/sphinx/deltaindex.log
#將delta合并到main中
/usr/local/sphinx/bin/indexer –merge main delta –c /usr/local/sphinx/etc/sphinx.conf >> /usr/lcoal/sphinx/var/log/sphinx/deltaindex.log
#啟動(dòng)服務(wù)
/usr/local/sphinx/bin/searchd >> /usr/local/sphinx/var/log/sphinx/searchd.log

腳本寫好后,需要編譯 chmod +x filename 這樣才能運(yùn)行。即
chmod +x build_main_index.sh
chmod +x build_delta_index.sh

最后,我們需要腳本能夠自動(dòng)運(yùn)行,以實(shí)現(xiàn),delta索引每5分鐘重新建立,和main索引只在午夜2:30時(shí)重新建立。

使用crontab 命令 這有倆個(gè)地方可作參考 crontab  crontab文件
crontab -e 來(lái)編輯 crontab文件,如果之前沒(méi)有使用,會(huì)是一個(gè)空的文件。寫下下面兩條語(yǔ)句
*/30 * * * *  /bin/sh /usr/local/sphinx/etc/build_delta_index.sh > /dev/null 2>&1
30 2 * * * /bin/sh /usr/local/sphinx/etc/build_main_index.sh > /dev/null 2>&1

第一條是表示每30分鐘運(yùn)行 /usr/local/sphinx/etc/下的build_delta_index.sh 腳本,輸出重定向。
第二條是表示 每天的 凌晨2:30分運(yùn)行 /usr/local/sphinx/etc下的build_main_inde.sh 腳本,輸出重定向。
關(guān)于前面的 5個(gè)值的設(shè)置,在上面的crontab文件中有詳細(xì)的描述。關(guān)于重定向的解釋,請(qǐng)看最上面的Crontab筆記 ,也有crontab的介紹。

保存好后:重新啟動(dòng)服務(wù)
  [root@test1 init.d]# service crond stop
[root@test1 init.d]# service crond start
或者
/etc/init.d/crontab   start

執(zhí)行計(jì)劃任務(wù)就可以了,合并索引適合修改數(shù)據(jù)庫(kù)少的情況,如果修改數(shù)據(jù)庫(kù)數(shù)據(jù),則需要再次讀取數(shù)據(jù)庫(kù)生成主索引,具體根據(jù)業(yè)務(wù)需求制定計(jì)劃。

上述就是小編為大家分享的sphinx中怎么更新增量索引了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識(shí),歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。

文章題目:sphinx中怎么更新增量索引
本文地址:http://www.rwnh.cn/article4/ipciie.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)頁(yè)設(shè)計(jì)公司、小程序開發(fā)網(wǎng)站導(dǎo)航、網(wǎng)站制作、做網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來(lái)源: 創(chuàng)新互聯(lián)

微信小程序開發(fā)
华蓥市| 信宜市| 塔城市| 黄梅县| 瑞金市| 南京市| 饶平县| 邮箱| 上蔡县| 长岭县| 稻城县| 通城县| 博白县| 广平县| 榆社县| 徐闻县| 巫溪县| 娱乐| 金门县| 内黄县| 通化市| 盘锦市| 霍邱县| 永吉县| 鲜城| 五峰| 闸北区| 成都市| 涡阳县| 即墨市| 道孚县| 肇州县| 乌海市| 延吉市| 岱山县| 云和县| 乌拉特前旗| 揭东县| 象州县| 盐津县| 黎川县|