一. 建立sphinx.conf檔案
其結構組成主要如下:
source 源名稱1{ //指定資料源
一些配置
}
index 索引名稱1{
source=源名稱1
source 源名稱2{
一些配置
index 索引名稱2{
source=源名稱2
indexer{
mem_limit = 32m
searchd{ //配置 searchd 守護程式本身
二. source 源名稱 相關配置說明
type=資料庫類型(mysql 或sql);
sql_host= 資料庫主機位址(如果是外網,請確定防火牆允許連結)
sql_user= 資料庫使用者名
sql_pass= 資料庫密碼
sql_db= 資料庫名稱
sql_port= 資料庫端口
sql_query_pre= 執行sql前設定的編碼 (set names utf8)
sql_query= 全文檢索要顯示的内容,據官方說法:盡可能不要使用where或groupby ,将其交給sphinx效率會更高;select 出來的字段必須包含至少一個唯一主鍵,以及全文檢索的字段 sphinx 會對select 中的 字段1 ,字段2 建立sphinx自己的索引 及 在查詢的字段中查找關鍵字
strip_html= 0/1 是否去掉html标簽
sql_attr_uint= 無符号整數屬性,可以設定多個,設定資料庫字段,設定哪個能顯示出哪個字段資料的整形來.
三. index中配置說明
source= 資料源名稱
path = 索引記錄存放目錄,注:d:/sphinx/data/cg 這個的意思是 在data目錄下建立一個名為cg的檔案
min_word_len= 索引的詞的最小長度 設為1 既可以搜尋單個位元組搜尋,越小 索引越精确,但建立索引花費的時間越長
charset_type= utf-8/gbk 設定資料編碼
charset_table= 字元表和大小寫轉換規則 .頻繁應用于sphinx的分詞過程
min_prefix_len = 最小字首(0)
min_infix_len = 最小中綴(1)
ngram_len = 對于非字母型資料的長度切割(預設已字元和數字切割,設定1為按沒個字母切割)
四. searchd配置說明
port= sphinx的端口(9312 與 searchd.exe監聽結果一緻)
log= 服務程序日志存放路徑,一旦sphinx出現異常,基本上可以從這裡查詢有效資訊
query_log= 用戶端查詢日志 尤為有用 它将在運作時顯示每次搜尋并顯示結果
read_timeout= 請求逾時(5)
max_children= 同時可執行的最大searchd 程序數(30)
pid_file= 程序id檔案
max_matches= 查詢結果的最大傳回數
seamless_rotate= 是否支援無縫切換,做增量索引時通常需要(0/1)
# 在啟動運作時是否提前加載所有索引檔案
preopen_indexes = 0
# 是否釋放舊的索引檔案
unlink_old = 1
# mva跟新池大小(預設為1m)
mva_updates_pool = 1m
# 最大允許的網絡包大小(預設8m)
max_packet_size = 8m
# 每個查詢最大允許的過濾器數量(預設256)
max_filters = 256
#每個過濾器最大允許的值的個數(預設4096)
max_filter_values = 4096
# 每個組的最大查詢數(預設為32)
max_batch_queries = 32
至此 spninx.conf 配置檔案結束;注意:如果有換行 必須用反斜杠 \ 連結
五. sphinx建立是以 及監聽
切換到 dos sphinx/bin 目錄下
1. 建立索引
indexer –c sphinx.conf 索引名稱/–all (–all參數是建立所有索引)
完成後提示如下:
total 535600 docs, 10707632 bytes
total 34.323 sec, 311958 bytes/sec, 15604.27 docs/sec
total 5 reads, 0.282 sec, 45592.6 kb/call avg, 56.4 msec/call avg
total 547 writes, 12.172 sec, 1017.0 kb/call avg, 22.2 msec/call avg
2. 建立完成後
可以執行 search [–c] sphinx.conf 搜尋内容 (-c參數:是否允許模糊搜尋)
3. 監聽端口
searchd
運作後 提示
listening on all interfaces, port=9312
accepting connections
監聽成功後 既可以運作php程式 進行 搜尋
phpcode:
require(“sphinxapi.php”); //加載類檔案
$cl=new sphinxclient(); //執行個體化類
$cl->setserver(‘localhost’,9312); //設定服務
$cl->setarrayresult(true); //設定 顯示結果集方式
$cl->setlimits(0,10); //同 sql語句中的limit
$cl->setsortmode(“mode”); //排序模式 sph_sort_attr_desc和sph_sort_attr_asc
$result=$cl->query(‘ff’,[索引名稱可選]); //執行搜尋
var_dump($result); //輸出
注意:每次修改sphinx.conf後要重建索引.