coreseek mysql.sock_coreseek配置
Sphinx實驗手冊
一、?環境準備:
源代碼編譯的LAMP環境
CentOS?6.3 Linux版本
Mysql-5.5.23 mysql版本
Apache-2.4.7 apache版本
Php-5.4.25 php版本
coreseek-3.2.14 coreseek版本
準備mysql數據
我們需要一些數據,這里我們用安裝mysql自帶的test庫進行測試
準備一個post貼子表,其中該表的字段如下:
/usr/local/mysql/bin/mysql -uroot -p
USE test;
CREATE TABLE post(
id INT AUTO_INCREMENT PRIMARY KEY,
title VARCHAR(255) ,
content TEXT
)ENGINE=MyISAM DEFAULT CHARSET=UTF8;
測試數據例如:
INSERT INTO post (title,content) ?VALUES ('lamp兄弟連','人類已經無法阻止兄弟連了');
INSERT INTO post (title,content) ?VALUES ('PHP簡介','有人說,PHP是拍黃片,你信了嗎');
真正實驗數據后續分發。
Coreseek-帶有中文分詞的Sphinx
Coreseek介紹:
Sphinx默認不支持中文索引及檢索,基于Sphinx開發了Coreseek全文檢索服務器,Coreseek應該是現在用的最多的Sphinx中文全文檢索,它提供了為Sphinx設計的中文分詞包LibMMSeg包含mmseg中文分詞
二、?安裝Coreseek
(1)、下載中文分詞包
http://www.coreseek.cn??到官網去下載Coreseek,3.2.14為穩定版,最新4.1為測試版,即將發布5。
用winscp等工具上傳到Linux的/lamp目錄中
(2)、解壓安裝
cd /lamp
tar?-zxvf?coreseek-3.2.14.tar.gz
進入到mmseg所在文件夾,先安裝中文分詞mmseg
cd /lamp/coreseek-3.2.14/mmseg-3.2.14/
./bootstrap #如果輸出waring信息可以忽略。
./configure?--prefix=/usr/local/mmseg
然后再進行編譯和安裝:
make?&&?make?install
然后運行mmseg,就能輸入安裝成功的信息了:
/usr/local/mmseg/bin/mmseg
出現下列信息,就證明mmseg中文分詞已經安裝好了。
接下來,我們要把Sphinx和mmseg結合起來
(1)、檢測安裝
進入coreseek目錄,進行安裝
cd?/lamp/coreseek-3.2.14/csft-3.2.14/
./configure?--prefix=/usr/local/coreseek?--with-mysql=/usr/local/mysql?--with-mmseg=/usr/local/mmseg?--with-mmseg-includes=/usr/local/mmseg/include/mmseg/?--with-mmseg-libs=/usr/local/mmseg/lib/
//如果沒有./configure這個文件請進到coreseek目錄下的testpack下api下的libsphinxclient下執行
./configure?--prefix=/usr/local/coreseek?--with-mysql=/usr/local/mysql?--with-mmseg=/usr/local/mmseg?--with-mmseg-includes=/usr/local/mmseg/include/mmseg/?--with-mmseg-libs=/usr/local/mmseg/lib/
make && make install
(2)、配置帶有中文分詞的sphinx配置文件
配置文件和上面的步驟一樣,只不過是在coreseek中,有幾個地方需要注意。
注意:coreseek中得配置文件也是csft.conf,而不是sphinx.conf
cd ?/usr/local/coreseek/etc
cp ?sphinx.conf.dist csft.conf
vim csft.conf
三、?配置文件
#################################################################
配置文件中有四種配置
source數據源相關
index索引相關
indexer索引器相關(索引器是用來生成索引的命令)
searchd服務進程相關
配置文件的格式有下面這幾段
source main{#配置了一個數據源作為主數據源,名稱是main
}
source delta:main {#增量數據源,繼承主數據源,名稱是delta
}#繼承后,相同的配置,不用再寫一次了,只需要把不同的寫出來
index ind_main{#配置了一個主數據索引,索引的名稱是ind_main
}
index delta:index_main{#增量數據索引,繼承主數據索引
}
index dist1{#分布式索引(在別的服務器上的索引中檢索)
}
indexer{#索引器
}
searchd{#服務進程
}
#################################################################
具體如下
主數據源,默認名是src1,方便管理,改為main
source main
{
type = mysql #數據庫類型
sql_host = localhost ???# MySQL主機IP
sql_user = root ???# MySQL用戶名
sql_pass = 123?# MySQL密碼
sql_db ?= test ???# MySQL數據庫
sql_port = 3306 ????????????# MySQL端口
sql_sock = /tmp/mysql.sock ??#linux下需要開啟,指定sock文件,將#號注釋去掉
sql_query_pre = SET NAMES UTF8 # MySQL檢索編碼(去掉注釋)
sql_query_pre = SET SESSION query_cache_type=OFF#關閉緩存(去掉注釋)
sql_query= \#獲取數據的SQL語句,反斜線“\”表示接著下一行
SELECT id, title, content FROM post
#sql_attr_uint = group_id#注釋掉(排序字段)
#sql_attr_timestamp = date_added ???#注釋掉(添加時間戳)
sql_query_info= SELECT * FROM post WHERE id=$id#這行將表名改正確,id是數據庫中的主鍵字段
}
主數據源main到這里配置結束了
接下來這個是增量數據源配置示例,先注釋掉,后面將單獨進行配置
增量數據源
#source src1throttled : src1
#{
# ????????sql_ranged_throttle ??= 100
#}
下面是主數據索引的配置示例,test1是主數據索引的名字,這里為了方便管理,修改為ind_main
主數據索引
index ind_main
{
source= main
#要對哪個數據源進行索引,這里對應上面主數據源的名字,將默認的src1改為main
path= /usr/local/coreseek/var/data/ind_main
#索引保存在什么地方,data目錄下,最好與索引名字同名
#注釋掉下面的幾行
#stopwords ????????????????= G:\data\stopwords.txt??#可選設置,表示停止詞文件,該文件中的詞匯(也可以為單字)不參與搜索;文件格式為普通UTF-8文本文件,每行一個
#wordforms ?????????????????= G:\data\wordforms.txt詞形字典。可選選項,默認為空。即將詞的各種形態如 “walks”,“walked”,“walking”變為標準形式“walk”
#exceptions ?????????????= /data/exceptions.txt??#特例文件,?對于中文用戶,這一選項無效。例如查詢“ms windows”不會匹 配包含“MS Windows”的文檔
#charset_type ??????????= sbcs??#字符集編碼類型,我們將在下面設置此項為zh_cn.utf-8
#添加下面這兩行,意思是把中文分詞加入到配置文件中
charset_type= zh_cn.utf-8#表示啟用中文分詞功能,否則中文分詞功能無效。需要source數據源之中,讀取的數據編碼字符集為UTF-8?。MySQL通過SET NAMES UTF8設定輸出字符集為UTF-8,即使原始數據為GBK也可以。
charset_dictpath = /usr/local/mmseg/etc/#中文詞典目錄就是安裝mmseg的目錄,該目錄下必須有uni.lib詞典文件存在
}
其它選項不用改,到這里主數據索引配置完成
下面是增量數據源索引,由于前面已將增量數據源注釋掉了,所以增量數據索引也不需要,注釋掉即可
增量數據源索引
#index test1stemmed : test1
#{
# ???????path ???????????????????= /usr/local/coreseek/var/data/test1stemmed
# ???????morphology ?????????????= stem_en
#}
接下來是分布式索引,只有這一臺服務器,不需要分布式索引,也注釋掉
分布式索引
#distributed index example
#index dist1
#{
#….
#agent_query_timeout ????????????= 3000
#}
將上面這些注釋掉后,其實只留下了主數據源和主數據索引
接下來是indexer settings索引器設置和searchd settings進程設置,默認即可
索引器
indexer
{
#默認即可,不用改
}
進程設置
searchd
{
#默認即可,不用改
}
整個配置完成
=============================================
注意,要確定數據庫中的表,一定是UTF8字符集
在MySQL中用:\s可以查看服務器信息
四、?測試使用
現在還沒有生成索引文件,這個data目錄是空的
ls /usr/local/coreseek/var/data
生成主數據索引
cd /usr/local/coreseek/bin
./indexer ind_main
mysql5.1報錯
error while loading shared libraries: libmysqlclient.so.16: cannot open shared object file: No such file or directory
原因是沒有找到MySQL的libmysqlclient.so.16,從MySQL安裝目錄中copy一份過去
cp /usr/local/mysql/lib/mysql/libmysqlclient.so.16 /usr/lib#放到/lib或/usr/lib都行
mysql5.5報錯
./bin/indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object file: No such file or directory
原因是沒有找到MySQL的libmysqlclient.so.18,從MySQL安裝目錄中軟連接過去
ln -s /usr/local/mysql/lib/libmysqlclient.so.18 /usr/lib/
兩個版本mysql的so文件路徑不一樣,需要了解即可。
重新生成索引
./indexer ind_main
using config file '/usr/local/coreseek/etc/csft.conf'...
indexing index 'ind_main'...
collected 2 docs, 0.0 MB
sorted 0.0 Mhits, 100.0% done
total 2 docs, 100 bytes
total 0.052 sec, 1921 bytes/sec, 38.42 docs/sec
total 1 reads, 0.000 sec, 0.2 kb/call avg, 0.0 msec/call avg
total 5 writes, 0.002 sec, 0.1 kb/call avg, 0.4 msec/call avg
然后再次查看data目錄,生成了很多文件
ls /usr/local/coreseek/var/data
ind_main.spa ?ind_main.sph ?ind_main.spk ?ind_main.spp?ind_main.spd ?ind_main.spi ?ind_main.spm
cd /usr/local/coreseek/bin
./search lamp
./search PHP
均成功搜索到內容
using config file '/usr/local/coreseek/etc/csft.conf'...使用的是哪一個配置文件
index 'test1': query 'PHP ': returned 1 matches of 1 total in 0.007 sec在test1索引中返回1個匹配項,0.007秒
displaying matches:
1. document=2, weight=2
id=2在id為2,title為PHP???,content為??PHP???,中文在命令行下亂碼屬正常現象
title=PHP??
content=????PHP?????????
words:
1. 'php': 1 documents, 2 hits Coreseek Fulltext 3.2 [ Sphinx 0.9.9-release (r2117)]
php這個詞,只在一篇文檔中出現,詞頻為2,出現了兩次
./search lamp兄弟連
displaying matches:
1. document=1, weight=5
id=1
title=lamp???
content=????????????
words:
1. 'lamp': 1 documents, 1 hits會自動幫我們拆詞
2. '兄弟': 1 documents, 2 hits?兄弟這個詞在一篇文章中出現,命中2次
3. '連': 1 documents, 2 hits中文詞典中,沒有中“兄弟連”的詞,所以被折成了“兄弟”+“連”
只要命令行能搜索到,php就能搜索到
啟動服務
netstat -tunpl | grep 9312查看端口是否有占用
./searchd啟動服務
using config file '/usr/local/coreseek/etc/csft.conf'...
listening on all interfaces, port=9312
當服務啟動后,從新生成索引時,需要加參數,不然會報錯
./index ind_main?--rotate
到此我們linux下的Sphinx中文分詞已經安裝完成了,并測試成功
五、?準備編譯PHP文件環境
搭建Samba,創建共享目錄方便Windows下開發
mount /dev/cdrom /mnt/cdrom
yum -y install samba
service smb start
smbpasswd -a jack# 新增一個jack用戶
vi /etc/samba/smb.conf
[www]
path = /usr/local/apache2/htdocs
valid users = jack?(多個用空格分開。如果沒配置此項,所有用戶都可以訪問)
writable = yes(寫權限)
testparm#測試samba配置文件語法錯誤
service smb restart
為samba用戶jack設置ACL權限
setfacl -R -m u:jack:rwx /usr/local/apache2/htdocs
setfacl -R -m d:u:jack:rwx /usr/local/apache2/htdocs
vi /usr/local/apache2/etc/httpd.conf
User jack#默認是User daemon
Group jack
/usr/local/apache2/bin/apachectl restart
windows命令行連接
net use * /del /y
net use \\192.168.88.88 "your password" /user:jack
如何用PHP去使用Sphinx技術
在這篇中我們使用 php程序操作Sphinx做個站內搜素
Sphinx集成到PHP程序中,有兩種方式:
1.Sphinx php模塊
2.Sphinxapi類
我們要使用 Sphinx需要做以下幾件事:
1、首先得有數據
2、建立Sphinx配置文件
3、生成索引
4、啟動Searchd服務進程,并開戶端口9312
5、用PHP客戶程序去連接Sphinx服務
一、啟用sphinx服務
想要在程序中使用Sphinx必須開啟Sphinx服務
啟動進程命令: searchd
-c ????????#指定配置文件
--stop ??#是停止服務
--pidfile ????#用來顯式指定一個PID文件
-p#指定端口
/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft.conf
注意:這里啟動的服務是searchd,不是search
Sphinx默認的端口是9312端口
如果出現這個問題:
說明端口已經被占用了,解決的辦法是:netstat --tunpl | grep 9312找出進程ID,
kill -9進程id,再開啟就可以了
二、用PHP連接使用Sphinx程序
使用API類連接Sphinx程序
需要到coreseek解壓包中找到sphinxapi.php文件,放到程序目錄下
cp /lamp/coreseek-3.2.14/csft-3.2.14/api/sphinxapi.php /usr/local/apache2/htdocs/
vi /usr/local/apache2/htdocs/sphinx_test.php
include 'sphinxapi.php'; ?//加載Sphinx API如果已打模塊,則不需要這個類
$sphinx = new SphinxClient();
#創建sphinx對象
$sphinx->SetServer("localhost", 9312);
#建立連接,第一個參數sphinx服務器地址,第二個sphinx監聽端口
$keyword= '兄弟連';
$sphinx->setMatchMode(SPH_MATCH_ANY); #匹配模式
$result = $sphinx->query($keyword,"*");
#執行查詢,第一個參數查詢的關鍵字,第二個查詢的索引名稱,多個索引名稱用,分開,也可以用*表示全部索引,其中包括增量索引
echo '
';var_dump($result);#打印結果
找到下面這一段,是我匹配的數據
[matches] => Array ( //匹配的結果
[6] => Array
[weight] => 4
[attrs] => Array
[group_id] => 1
[date_added] => 1319127367
#一個多維的數組,下標[6]是你匹配包含關鍵字的文檔id,id對應的數組,[weight]是權重,[attrs]是屬性,我們在配置文件中指定的
這段也是我們需要的數據
[total] => 2
#此查詢在服務器檢索所得的匹配文檔總數
[total_found] => 2
#索引中匹配文檔的總數
[time] => 0.009
#這個是我們這次查詢所用的時間
[words] => Array (
[兄弟] => Array
[docs] => 2 ?在文檔中出現多少次 (content字段中)
[hits] => 6 ?一共出現多少次
[連] => Array
[docs] => 2
[hits] => 6
(3)、取得數據摘要并高亮顯示
Matches中就是我們匹配的結果,但是仿佛不是我們想要的數據,比如titile,content字段的內容就沒有匹配出來,根據官方的說明是Sphinx并沒有連接到MySQL去取數據,只是根據它自己的索引內容進行計算,因此如果想用Sphinx提供的API去取得我們想要的數據,還必須以查詢的結果為依據,再次查詢MySQL從而得到我們想要的數據
比如:
$mysqli = new mysqli("localhost","root","password","test");
$ids= join(',',array_keys($result['matches'])); 要把需要的id取出來。
$sql="select title,content from post where id in({$ids})”;
$result=$mysqli->query($sql);
while($row=$result->fetch_row()){
#循環體開始解析看下結果.
下面我們在輸出結果的時候需要生成摘要,高亮(就是和百度一樣,關鍵字標紅)我們需要用到 buildExcerpts這個函數,(php手冊中)語法格式:
public array SphinxClient::buildExcerpts ( array $docs , string $index , string
$words [, array $opts ])
#返回的是一個數組,一共有四個參數
#第一個參數是從數據庫中查詢的結果集
#第二個參數是索引的名字
#第三個參數是要高亮顯示的關鍵字
#第四個參數是顯示的字 格式化
$opts = array(
#格式化摘要,高亮字體設置
#在匹配關鍵字之前插入的字符串,默認是
"before_match" ?=> "",
#在匹配關鍵字之后插入的字符串,默認是
"after_match" ?=> "",
#在摘要段落之前插入的字符串默認?
"chunk_separator" => " ... ",
);
$res=$sphinx->buildExcerpts($row,"index",$keyword,$opts);
echo "".$res[0].""; 標題
echo "".$res[1].""; ?摘要
echo $res[2]."
"; ?添加時間}
#循環體結束
到這里呢,我們用php程序調用sphinxapi實現了高亮摘要功能
三、匹配模式
匹配模式:SetMatchMode(設置匹配模式)
原型:function SetMatchMode ( $mode )
SPH_MATCH_ALL 匹配所有查詢詞(默認模式).
SPH_MATCH_ANY 匹配查詢詞中的任意一個.
SPH_MATCH_PHRASE 將整個查詢看作一個詞組,要求按順序完整匹配.
SPH_MATCH_BOOLEAN 將查詢看作一個布爾表達式.
SPH_MATCH_EXTENDED 將查詢看作一個Sphinx內部查詢語言的表達式.
SPH_MATCH_FULLSCAN 使用完全掃描,忽略查詢詞匯.
SPH_MATCH_EXTENDED2 類似SPH_MATCH_EXTENDED,并支持評分和權重
四、Sphinx實時索引
數據庫中的數據很大,然后我有些新的數據后來加入到數據庫中,也希望能夠檢索到,全部重新建立索引很消耗資源,這樣需要用到“主索引+增量索引”的思路來解決,這個模式實現的基本原理是設置兩個數據源和兩個索引。
1、創建一個計數器
在數據庫中增加一個計數表,記錄將文檔集分為兩個部分的文檔 ID,每次重新構建主索引時,更新這個表
先在 mysql中插入一個計數表
CREATE TABLE sph_counter(id INT PRIMARY KEY, max_doc_id INT);
2、再次修改配置文件
主數據源,繼承數據源,主索引,繼承索引。(繼承索引也就是增量索引)。
主數據源里面:我們需要把欲查詢語句改成下面的語句:
vi /usr/local/coreseek/etc/csft.conf
主數據源
Source main{
#添加一個sql_query_pre語句
sql_query_pre = REPLACE INTO sph_counter SELECT 1, MAX(id) FROM post
#修改sql_query內容如下
sql_query= ???\
SELECT id,title, content FROM post \
WHERE id<=(SELECT max_doc_id FROM sph_counter WHERE counter_id=1)
}
增量數據源,繼承自main數據源,只需要重寫main中的sql_query_pre和sql_query項,
并將默認的test1stemmed名字改為delta方便管理
增量數據源
source delta : main
{
sql_query_pre = SET NAMES utf8
sql_query= \
SELECT id,title, content FROM post \
WHERE id>(SELECT max_doc_id FROM sph_counter WHERE id=1)
}
主索引不變
Index ind_main {
source ?= main
path = /usr/local/coreseek/var/data/main
}
增量索引,繼承了ind_main索引,并重寫source和path項
index ind_delta:ind_main
{
source= delta
path= /usr/local/coreseek/var/data/ind_delta
# distributed index
}
其它配置不用改變
注意:如果你增量索引的source配置中只有id,content兩項
而主索引的 source配置中有id, title,content三項,合并的時候會報屬性數量不匹配,如:
Delta:sql_query = SELECT id, title,content FROM post
Main:sql_query=SELECT id,title,date,content FROM post
3、測試增量索引+主索引
如果想測試增量索引是否成功,往數據庫表中插入數據,查找是否能夠檢索到,這個時候檢索應該為空,然后,單獨重建增量索引
INSERT INTO post (title,content) ?VALUES ('管長龍的郵箱','管長龍guanchanglong?email : 362753231@qq.com lamp兄弟連');
/usr/local/coreseek/bin
./search email #檢索沒有結果
./indexer ind_delta#做增量索引,查看是否將新的記錄進行了索引
ls /usr/local/coreseek/var/data/
./search email#再次測試,就可以檢索出來了
此時,再用/usr/local/coreseek/bin/search工具來檢索,能夠看到,在主索引中檢索到的結果為0,而在增量中檢索到結果。當然,前提條件是,檢索的詞,只在后來插入的數據中存在
4、實時更新索引
我們需要建立兩個腳本,還要用到計劃任務
建立一個主索引和增量索引的腳本
main.sh ?delta.sh
在增量索引中寫下delta.sh
vi /usr/local/coreseek/etc/delta.sh
#!/bin/bash
#delta.sh
/usr/local/coreseek/bin/indexer ind_delta?--rotate >>/usr/local/coreseek/var/log/delta.log
主索引中寫下:main.sh
vi /usr/local/coreseek/etc/main.sh
#!/bin/bash
#main.sh
/usr/local/coreseek/bin/indexer ind_main?--rotate >>/usr/local/coreseek/var/log/main.log
最后,我們需要腳本能夠自動運行,以實現增量索引每5分鐘重新建立,和主索引只在凌晨2:30時重新建立.
腳本寫好了,我們需要建立計劃任務
crontab -e
*/5?* * * * ?/usr/local/coreseek/etc/delta.sh
30 2 * * * ?/usr/local/coreseek/etc/main.sh
第一條是表示每5分鐘運行
第二條是表示每天的凌晨2:30分運行
腳本權限:
chmod a+x /usr/local/coreseek/etc/delta.sh
chmod a+x /usr/local/coreseek/etc/main.sh
要驗證的話,我們可以查看日志文件
五、分布式索引(了解)
分布式是為了改善查詢延遲問題和提高多服務器、多 CPU或多核環境下的吞吐率,對于大量數據(即十億級的記錄數和TB級的文本量)上的搜索應用來說是很關鍵的
分布式思想:對數據進行水平分區(HP,Horizontally partition),然后并行處理,
當searchd收到一個對分布式索引的查詢時,它做如下操作
1. 連接到遠程代理.
2. 執行查詢.
3. 對本地索引進行查詢.
4. 接收來自遠程代理的搜索結果.
5. 將所有結果合并,刪除重復項.
6. 將合并后的結果返回給客戶端.
index dist
{
type = distributed
local = chunk1
agent = localhost:9312:chunk2 ???本地
agent = 192.168.100.2:9312:chunk3 遠程
agent = 192.168.100.3:9312:chunk4 遠程
}
Sphinx我們已經基本講完,主要講解了包括Sphinx、中文分詞、高亮、摘要、匹配、增量索引、實時索引和分布式索引等方面的知識.
六.PHP代碼實例:
index.php
Sphinx搜索測試Sphinx搜索測試
請輸入搜索關鍵字
find.php
/**
* Sphinx演示代碼
* @author ZouYiliang
*/
header('Content-Type:text/html;charset=utf-8');
//include 'sphinxapi.php';
$keyword=$_GET['keyword'];
//實例化對象
$sphinx=new SphinxClient();
//設置服務器信息
$sphinx->SetServer('localhost',9312);
//設置全文查詢的匹配模式
$sphinx->SetMatchMode(SPH_MATCH_ANY); ??//例:lamp php則文檔中有任意一個個單詞就能匹配該文檔
//$sphinx->SetMatchMode(SPH_MATCH_ALL); //例:lamp php則文檔中必須同時出現這兩個單詞
//設置返回結果集偏移量和數目
$sphinx->setLimits(0,2);
//執行搜索查詢
$result=$sphinx->query($keyword,'*');//第二個參數是指定使用哪一個索引,例如ind_main
/*
echo "
";print_r($result);
exit;
//*/
/*
"matches" 存儲文檔ID以及其對應的另一個包含文檔權重和屬性值的hash表
"total" 此查詢在服務器檢索所得的匹配文檔總數(即服務器端結果集的大小,且與相關設置有關)
"total_found" (服務器上找到和處理了的)索引中匹配文檔的總數
"words" 將查詢關鍵字(關鍵字已經過大小寫轉換,取詞干和其他處理)
包含關于關鍵字的統計數據
docs——在多少文檔中出現
hits——共出現了多少次)
"error" searchd報告的錯誤信息
"warning" searchd報告的警告信息
$result['matches']中的key,就是post表的id
*/
if($result['total_found']==0){
echo '查無結果';
exit;
}else{
echo "共查到{$result['total_found']}條記錄
";
}
//拿到所有的id,用逗號組裝,用于sql中的in查詢
if(is_array($result['matches'])){
$ids=join(',',array_keys($result['matches']));
}
//連接MySQL數據庫
mysql_connect('localhost','root','root');
mysql_query('set names utf8');
mysql_select_db('test');
//根據id從數據庫中查詢數據,存放到$posts變量中
$posts=array();
$sql="select * from post where id in({$ids})";
$rst=mysql_query($sql);
if($rst && mysql_num_rows($rst)>0){
while ($row=mysql_fetch_assoc($rst)) {
$posts[]=$row;
}
}
//var_dump($posts);
//高亮顯示的模板
$opts=array(
"before_match"=>"",
"after_match"=>""
);
foreach($posts as $row){
$item=$sphinx->buildExcerpts($row,"ind_main",$keyword,$opts);
//用索引訪問
echo "編號: {$item[0]}
";
echo "標題: {$item[1]}
";
echo "內容: {$item[2]}
";
echo "
";
}
//sphin配置介紹
http://www.php100.com/html/itnews/it/2013/0505/13435.html
//相關文檔介紹
//win7下安裝
//thinkphp 配置方法
http://bbs.lampbrother.net/read-htm-tid-162848.html
總結
以上是生活随笔為你收集整理的coreseek mysql.sock_coreseek配置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: IP跳转,驱动级IP重定向,驱动级IP跳
- 下一篇: 前端学习(41):背景实现视觉差效果