中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

sphinx 增量索引實現(xiàn)實例

2018-07-20    來源:open-open

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

注:sphinx的增量索引其實是通過兩個索引來實現(xiàn)的(主索引每天凌晨更新,增量索引每5分鐘生成一次),網(wǎng)上有說可以通過索引merge合并成一個索引,但我試了試沒有真的合并進去


sphinx 增量索引的設(shè)置    數(shù)據(jù)庫中的已有數(shù)據(jù)很大,又不斷有新數(shù)據(jù)加入到數(shù)據(jù)庫中,也希望能夠檢索到。全部重新建立索引很消耗資源,因為我們需要更新的數(shù)據(jù)相比較而言很少。 例如。原來的數(shù)據(jù)有幾百萬條,而新增的只是幾千條。這樣就可以使用“主索引+增量索引”的模式來實現(xiàn)近乎實時更新的功能。  
    這 個模式實現(xiàn)的基本原理是設(shè)置兩個數(shù)據(jù)源和兩個索引,為那些基本不更新的數(shù)據(jù)建立主索引,而對于那些新 增的數(shù)據(jù)建立增量索引。主索引的更新頻率可以設(shè)置的長一些(例如設(shè)置在每天的午夜進行),而增量索引的更新頻率,我們可以將時間設(shè)置的很短(幾分鐘左 右),這樣在用戶搜索的時候,我們可以同時查詢這兩個索引的數(shù)據(jù)。
    使用“主索引+增量索引”方法有個簡單的實現(xiàn),在數(shù)據(jù)庫中增加一個計數(shù)表,記錄每次重新構(gòu)建主索引時,被索引表的最后一個數(shù)據(jù)id,這樣在增量索引時只需要索引這個id以后的數(shù)據(jù)即可,每次重新構(gòu)建主索引時都更新這個表。
    測試條件:以默認的sphinx.conf配置為例,數(shù)據(jù)庫表的數(shù)據(jù)也以 example.sql為例。

1、創(chuàng)建相關(guān)表

 

創(chuàng)建主索引表
 CREATE TABLE `sph_test1` (
  `id` int(10) unsigned NOT NULL,
  `weight` int(11) NOT NULL,
  `query` varchar(3072) CHARACTER SET latin1 NOT NULL,
  `group_id` int(11) DEFAULT NULL,
  KEY `query` (`query`)
) ENGINE=SPHINX DEFAULT CHARSET=utf8 CONNECTION='sphinx://127.0.0.1:9312/test1'
創(chuàng)建索引計數(shù)表
	 CREATE TABLE `sph_counter` (
  `id` int(11) NOT NULL,
  `max_doc_id` int(11) NOT NULL,
  PRIMARY KEY (`id`)
)
創(chuàng)建增量索引表
 CREATE TABLE `sph_delta_test1` (
  `id` int(10) unsigned NOT NULL,
  `weight` int(11) NOT NULL,
  `query` varchar(3072) NOT NULL,
  `group_id` int(11) DEFAULT NULL,
  KEY `query` (`query`(1024))
) ENGINE=SPHINX DEFAULT CHARSET=utf8 CONNECTION='sphinx://127.0.0.1:9312/delta_test1'

2、修改sphinx.conf

source src1{
       type                = mysql
       sql_host            = localhost
       sql_user            = yourusername
       sql_pass            = yourpassword
       sql_db              = test   //你所用的數(shù)據(jù)庫
       sql_port            = 3306 //所用端口,默認是3306
       sql_query_pre       = SET NAMES utf8
       sql_query_pre       = 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的個數(shù)需和main_src 對應(yīng),否則可能搜索不出相應(yīng)結(jié)果
source delta_src1: src1{
         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 test1 //主索引{
       source           = src1
       path             = /usr/local/sphinx/var/data/test1
       charset_type     = utf-8    #這個是支持中文必須要設(shè)置的
       chinese_dictionary =/usr/local/sphinx/etc/xdict       #..........其它可以默認
}

index delta_test1: src1 //增量索引{
         source = delta_src1
         path     = /usr/local/sphinx/var/data/delta_src1
}

3、定時任務(wù)生成索引(--rotate 參數(shù)可以不重啟服務(wù)索引就能生效)

 a、每天凌晨生成全量索引:./indexer test1 --rotate

 b、每10分鐘生成一次增量索引 :./indexer delta_test1 --rotate

標(biāo)簽: Mysql 數(shù)據(jù)庫 搜索

版權(quán)申明:本站文章部分自網(wǎng)絡(luò),如有侵權(quán),請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉(zhuǎn)載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權(quán)歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇:pinyin4j使用中文轉(zhuǎn)化拼音

下一篇:Android端通過HttpURLConnection上傳文件到服務(wù)器