1. 程式人生 > 其它 >sphinx(八)sphinx增量索引

sphinx(八)sphinx增量索引

技術標籤: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

歡迎訪問小程式:
在這裡插入圖片描述