php_sphinx安裝使用


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>';

}

天龍八部
一部非常好看的武俠電視劇


射雕英雄傳
另一部非常好看的武俠電視劇


俠客行
也是非常好看的武俠電視劇

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM