Sphinx是一個獨立的全文索引引擎,意圖爲其餘應用提供高速、低空間php
佔用、搜索結果高相關度的全文搜索功能。Sphinx能夠很是容易的與mysql
SQL數據庫和腳本語言集成。內置MySQL和PostgreSQL數據庫數據源sql
的支持。搜索API支持PHP、Python、Perl、Rudy和Java。數據庫
Sphinx的使用背景:在mysql中優化的時候,對varchar,char,text對這些數據進行查詢時,若是咱們使用like ‘%單詞’,是沒法使用到索引,若是網站的數據量比較大,會拖垮網站的速度。windows
先對數據源創建索引。採用分詞技術,造成一個索引表。當查詢某個單詞的時候,先到sphinx創建的索引去查找,而後再去數據庫用id查找。api
下載完後解壓後,把etc目錄下面,把mysql的模板配置文件csft_mysql.conf拷貝到上級目錄,並修改成sphinx.conf。而後對其配置數據源,模板裏面都有詳細註釋。服務器
而後去bin目錄根據配置好的文件生成生成索引文件:fetch
命令:優化
Indexer.exe -c sphinx.conf -all // --all:爲配置文件中全部的索引建立索引文件網站
執行sphinx下的一個程序indexer.exe –c配置文件 –all | 索引的名字
Indexer.exe -c sphinx.conf 索引的名字(sphinx.conf裏面配置的)
安裝啓動sphinx:
語法:
searchd.exe –c 配置文件 --install
該命令對應的參數:
searchd開啓服務端
searchd -c 配置文件 索引名稱
服務器端默認監聽 9312 端口。經常使用命令:
-c : 指定配置文件路徑
--stop : 中止當前服務
--status : 查看當前狀態
--install : 安裝爲 windows 服務
--delete: 刪除windows服務
--port port: 監聽的端口
--index indexName : 只查詢某個索引,默認查詢全部索引
服務啓動後,去services.msc 啓動 searchd ,驗證的話查看端口 netstat -an 看看是否有9312開啓
代碼實現:
<?php
require('sphinxapi.php'); // 這個文件在sphinx的api目錄裏
$sc = new SphinxClient(); // 生成客戶端
$sc->setServer('localhost',9312); // 設置服務器
$res = $sc->query('武俠',’ mysql’); // 第一個參數是查詢內容,第二個參數是索引的名稱(sphinx.conf裏面配置)
$ids = implode(",",array_keys($res['matches']));
$conn = mysqli_connect("localhost","root","root","test");
mysqli_query($conn,"set names utf8");
$sql = "select * from test where id in($ids)";
$res = mysqli_query($conn,$sql);
$list = array();
while($row = mysqli_fetch_assoc($res)){
$list[] = $row;
}
mysqli_free_result($res);
mysqli_close($conn);
foreach($list as $v){
echo $v['name'].'<br/>'.$v['desc'].'<hr>';
}
天龍八部
一部很是好看的武俠電視劇
射鵰英雄傳
另外一部很是好看的武俠電視劇
俠客行 也是很是好看的武俠電視劇