sphinx(八)sphinx增量索引
阿新 • • 發佈:2020-12-12
技術標籤:sphinx全文搜尋mysqlsphinx增量索引全文檢索
我伺服器上部署的sphinx-for-chinese全文搜尋引擎主要是做部落格的搜尋,資料量不大,因此,這裡更新索引每次都是更新所有。
但是相對於大資料量來說,每次都全部更新的話,速度可能會比較慢。
關於這個問題,sphinx為我們提供了增量索引這個功能。
也就是說,我們每次為新增加的資料增加索引,然後和之前的索引再進行合併,這個相對來講速度比較快。
1:建立sphinx索引表,用於記錄那些資料已經被建立索引
create table sphinx
(
max_id int unsigned not null default 0
)
#該表作用:用於記錄article表哪些資料已被建立索引,哪些資料未被建立索引
#獲取未建立索引資料:select * from article where id > sphinx表記錄的數字
2:修改配置檔案(增加新索引)
將如下程式碼追加至你的sphinx.conf中
# 增量索引資料來源
source src1_add
{
# 下面是sql資料庫特有的埠,使用者名稱,密碼,資料庫名等。
type = mysql
sql_host = localhost
sql_user = mysql
sql_pass = xxxxx
sql_db = xxxxx
sql_port = 3306
sql_query_pre = SET NAMES utf8
# (SELECT MAX(max_id) FROM sphinx) 目的,規避重複建立索引
sql_query = SELECT p1.*,p2.content FROM article p1 LEFT JOIN article_info p2 ON p1.id = p2.article_id WHERE p1.id > (SELECT MAX(max_id) FROM sphinx)
# 建完索引這後 ,把最後一條記錄的id存到sphinx表中
# 在主查詢(sql_query)之後執行的SQL
sql_query_post = UPDATE sphinx SET max_id = (SELECT MAX(id) FROM article)
}
# 增量索引資料索引
index src1_add
{
# 對應的source資料來源名稱
source = src1_add
# 索引存放位置
path = /usr/xxx/xxx/xxx/data/src1_add
docinfo = extern
mlock = 0
morphology = none
min_word_len = 1
html_strip = 0
charset_type = zh_cn.utf-8
}
3:使用增量索引
(1):重啟sphinx服務
使用如下命令:
/usr/local/sphinxforchinese/bin/indexer -c /usr/local/sphinxforchinese/etc/sphinx.conf src1_add
#用於給test1表未建立索引資料增加索引
/usr/local/sphinxforchinese/bin/indexer -c /usr/local/sphinxforchinese/etc/sphinx.conf --merge test1 src1_add --rotate
#將src1_add索引合併到test1索引中
以上大概就是sphinx增量索引的使用。不是很麻煩。
有好的建議,請在下方輸入你的評論。
歡迎訪問個人部落格
https://guanchao.site
歡迎訪問小程式: