sphinx學習筆記

自己學習記錄用的
sphinx是俄國人寫的,我們一般用的是國人封裝的coreseek,支持中文
,sphinx只支持utf8,不能用gbk編碼
用處:全文索引

好處:

1、模糊查詢%like時,不會全盤掃描磁盤,耗時短。2、中文搜索可以分詞

用法:

1、sphinx和mysql獨立分開,sphinx先查詢mysql查到id,給php,php通過id在mysql查詢目標記錄
2、linux下,重新編譯mysql,相當于mysql的插件存在,使用的時候感覺不到sphinx,這種方式叫se

具體使用:

三大步驟:
1、配置文件,數(shù)據(jù)源source,索引index(生成索引文件),search服務定義。
a)數(shù)據(jù)源:如果搜索包括商品名稱和屬性的時候
sql語句第一個字段必須是ID!?。?!
多個字段拼成一個字符串的時候,可以使用GROUP_CONCAT(字段名)

主查詢語句

如果考慮到根據(jù)銷量、評論等進行排序,就要進行連表查詢,比較復雜了
一個數(shù)據(jù)源對應一個索引,可以有多對出現(xiàn)
b)索引文件:索引文件設置數(shù)據(jù)源名稱,索引文件存放路徑
c)searchd服務定義:端口號默認9312,返回最大記錄數(shù)默認1000,兩個log文件,一個pid文件路徑指定。必須填?。。。。?br> 文件棉麻必須是utf8,而不是utf8+,用記事本打開就變成utf8+了

這時候就可以用命令生成索引了:bin目錄=》indexr.exe,cmd內(nèi),1、-c指定配置文件路徑 2、--all指定哪個數(shù)據(jù)源

生成索引文件操作

生成后的物理文件


sphinx索引文件

百萬級數(shù)據(jù)可能半個小時吧,具體跟電腦性能有關系

2、啟動服務
通過bin目錄=》searchd.exe來啟動服務


啟動服務

查看服務


查看服務

查看服務

3、api
可以在寫php腳本來實際查詢一下,前提是把sphinx的php類文件復制到腳本中,就可以調(diào)用查詢了。查詢出來的是商品id,然后通過id再去mysql查詢商品信息。

sphinx自動更新

添加數(shù)據(jù)源delta,索引delta,腳本自動運行

一、數(shù)據(jù)源

1、需要知道sphinx生成索引以后最后數(shù)據(jù)的id,因為id一般都是自增長。通過另外單獨建立一個表,來記錄這個最新id。
2、在config文件數(shù)據(jù)源添加個sql語句,即生成索引后自動執(zhí)行的sql


sql_query
sql_query_post,自動執(zhí)行sql,記錄最大id

二、索引

添加index索引

三、腳本

windows bat腳本定期更新索引文件

如果是linux系統(tǒng),sphinx相當于一個表了


最后編輯于
?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容