介紹php
sphinx自己是一箇中文檢索索引技術 mysql索引: 主鍵、惟1、普通、全文(match/agaisnt)
sphinx是俄羅斯人開發一款速度、效率很是高的索引技術sphinx是來替代mysql全文索引的
mysql自己的全文索引技術特性表現通常,通常數據庫使用全文索引都不是使用自己的,都須要藉助第3方索引技術支持,php->mysql->sphinx> , java->oracle->lucene 搜索引擎(百度/google等)要大量使用「檢索技術」java2:sphinx使用的好處:① 快速檢索用戶須要的模糊信息(替代like使用) ②
自己還有中文「分詞」的實現,英文分詞經過」空格」區分,中文分詞經過技術實現(例如」匹配」,使用習慣)mysql
sphinx是專業作數據檢索的一個技術用戶去sphinx作模糊查詢,查找「北京」相關的信息,sphinx把「北京西二旗」所有信息的「主鍵id」值給用戶返回以後,用戶經過「許多-主鍵id」值去數據庫 得到相關的記錄信息,並返回信息。
查詢多個主鍵id信息,使用了in查詢算法
1:首先你須要下載sphinx功能包sql
具體是下載coreseek:中文+sphinx解壓壓縮文件到軟件的運行目錄便可,路徑不能有中文和空格 下載地址:http://www.coreseek.cn/news/7/52/]
2: 爲數據庫數據建立索引文件導入操做的數據表數據(5萬條記錄)
// 注意:若是以前沒有選擇數據庫,那麼使用use選擇數據庫使用管理員權限的cmd數據庫
mysql > use forum ; mysql> source d:/forum.sql #確保數據導入成功 否則無法創建索引
3: 作索引配置, 注意用編輯器打開,不要使用記事本sphinx.conf建立索引的執行程序文件軟件目錄/bin/indexer.exeapi
命令:indexer.exe -c 配置文件路徑 source名稱
4:查看索引文件數組
4.1 使用sphinx速度對比oracle
安裝sphinx服務使用管理員cmd執行如下命令
searchd.exe --install -c 配置文件路徑 參數順序必定要不能顛倒。編輯器
4.2:查看並啓動sphinx查詢服務
searchd --install -c C:\wamp64\bin\coreseek-3.2.14-win32\sphinx.conf
若是安裝服務以後,不可以正常啓動服務,可能就是安裝的時候,參數順序不對。卸載重裝
searchd.exe --delete刪除服務
php鏈接sphinx,須要引入api文件,進行內容模糊檢索查詢:
原理:php傳入關鍵字給sphinx,sphinx根據自身算法找到數據的主鍵id,mysql根據id去查詢數據 前提是主鍵必須存在哦!
代碼示例:
/** * 鏈接sphinx服務 進行查詢 * @param $key 搜索的關鍵字 * @return bool|mixed */ public function linkSphinx($key) { //實列化 $cl = new \SphinxClient (); $cl->SetServer('127.0.0.1', 9312); //鏈接sphinx服務 $cl->SetConnectTimeout(3); //超時時間 $cl->SetArrayResult(true); //以數組形式返回得到的結果 $cl->SetMatchMode(SPH_MATCH_ANY); //分詞,收集分詞任何部分檢索的結果 $cl->setLimits(0, 12); //限制獲取記錄條數 //(前12個記錄信息) //索引源名稱 $index_name = "dizhi"; //$res = $cl->Query ( '被檢索的關鍵字', "索引名稱" ); $res = $cl->Query($key, $index_name); return $res; }
① 經過兩個字段查找
② 有分詞查找體現
獲取到maths的下標 取到id 根據主鍵id去查詢數據