Sphinx的簡介:
Sphinx是一個獨立的全文索引引擎,意圖為其他應用提供高速、低空間
占用、搜索結果高相關度的全文搜索功能。Sphinx可以非常容易的與
SQL數據庫和腳本語言集成。內置MySQL和PostgreSQL數據庫數據源
的支持。搜索API支持PHP、Python、Perl、Rudy和Java。
Sphinx的使用背景:在mysql中優化的時候,對varchar,char,text對這些數據進行查詢時,如果我們使用like ‘%單詞’,是無法使用到索引,如果網站的數據量比較大,會拖垮網站的速度。
Sphinx的原理:
先對數據源建立索引。采用分詞技術,形成一個索引表。當查詢某個單詞的時候,先到sphinx建立的索引去查找,然后再去數據庫用id查找。
Windows 安裝sphinx的過程:
下載完后解壓后,把etc目錄下面,把mysql的模板配置文件csft_mysql.conf拷貝到上級目錄,並修改為sphinx.conf。然后對其配置數據源,模板里面都有詳細注釋。
然后去bin目錄根據配置好的文件生成生成索引文件:
命令:
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>';
}
天龍八部
一部非常好看的武俠電視劇
射雕英雄傳
另一部非常好看的武俠電視劇
俠客行
也是非常好看的武俠電視劇