Linux下編譯安裝Sphinx、中文分詞coreseek及PHP的sphinx擴(kuò)展
Linux環(huán)境為:CentOS5.5、Ubuntu12.04
1、軟件下載sphinx-2.1.3
coreseek-4.1
2、安裝 sphinxtar zxvf sphinx-2.1.3.tar.gz //解壓sphinx包c(diǎn)d sphinx-2.1.3./configure --prefix=/usr/local/sphinx --with-mysql=/usr/local/mysql/
--prefix:指定 sphinx 的安裝路徑--with-mysql:指定 mysql 安裝路徑
sudo make && make install
編譯并安裝
安裝成功之后,sphinx 會(huì)形成三個(gè)命令:
indexer 創(chuàng)建索引命令searchd 啟動(dòng)進(jìn)程命令search 命令行搜索命令
注:上述命令默認(rèn)在/usr/local/sphinx/bin目錄下
3、配置 sphinx及使用cd /usr/local/sphinx/etc
進(jìn)入 sphinx 的 etc 目錄下
sudo cp sphinx.conf.dist sphinx.conf
拷貝一份配置文件,并且命名為 sphinx.conf。
將該目錄下的example.sql文件導(dǎo)入本地?cái)?shù)據(jù)庫名為test的數(shù)據(jù)庫中。
修改配置信息,將其中數(shù)據(jù)庫連接信息修改為你的本地?cái)?shù)據(jù)庫信息。
然后使用如下命令導(dǎo)入數(shù)據(jù)并生成索引:
$ cd /usr/local/sphinx/etc$ sudo /usr/local/sphinx/bin/indexer --all
如果執(zhí)行indexer命令報(bào)錯(cuò):
ERROR: index ’test1stemmed’: sql_connect: Can’t connect to local MySQL server through socket ’/var/run/mysqld/mysqld.sock’
則可能是因?yàn)閙ysql.sock的位置問題,在本機(jī)中,改位置是/tmp/mysql.sock(與安裝mysql時(shí)設(shè)置有關(guān)),在sphinx.conf中取消這一行的注釋即可(去掉前面的#號(hào)):
#sql_sock ? ? ? ? ? ? ? ?= /tmp/mysql.sock
再次執(zhí)行上述indexer命令,一切正常。
執(zhí)行查詢的話可以使用如下指令:
$ cd /usr/local/sphinx/etc$ sudo /usr/local/sphinx/bin/search test
在執(zhí)行search搜索過程中可能報(bào)錯(cuò):
index ’test1’: search error: query too complex, not enough stack (thread_stack=-2665032K or higher required).
我試著在sphinx.conf中的searchd模塊中修改thread_stack的值,但沒有解決問題,后來注釋掉source src1中的如下這行
#sql_query_info ? ? ? ? = SELECT * FROM documents WHERE id=$id
再執(zhí)行search命令,就OK了。
后臺(tái)啟動(dòng)sphinx使用如下指令:
$ cd /usr/local/sphinx/etc$ sudo /usr/local/sphinx/bin/searchd
使用php腳本執(zhí)行搜素命令,可使用如下指令:
$ cd sphinx/api$ php test.php test
輸入結(jié)果如下:
Query ’test ’ retrieved 3 of 3 matches in 0.022 sec.Query stats:’test’ found 10 times in 6 documentsMatches:1. doc_id=1, weight=101, group_id=1, date_added=2014-01-20 10:07:372. doc_id=2, weight=101, group_id=1, date_added=2014-01-20 10:07:373. doc_id=4, weight=1, group_id=2, date_added=2014-01-20 10:07:374、安裝 coreseek
tar zxvf coreseek-4.1.tar.gz
解壓會(huì)出現(xiàn)兩個(gè)目錄:csft-4.1、mmseg-3.2.14
先安裝 mmseg
cd mmseg-3.2.14/./configure --prefix=/usr/local/mmseg
編譯如果出現(xiàn)錯(cuò)誤:“config.status: error: cannot find input file: src/Makefile.in”
解決方案:
sudo apt-get install automakeaclocallibtoolize --force 我運(yùn)行后有一個(gè)錯(cuò)誤,沒管它。automake --add-missingautoconfautoheadermake clean./configure --prefix=/usr/local/mmsegmakesudo make install
安裝 csft(coreseek)
cd csft-4.1/sh buildconf.sh./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/ sudo make && make install
安裝完成之后和sphinx安裝后一樣,需要導(dǎo)入coreseek/etc/example.sql文件到本地?cái)?shù)據(jù)庫,然后拷貝sphinx.conf.dist到csft.conf,修改其中數(shù)據(jù)庫用戶名及密碼,測(cè)試出錯(cuò)和sphinx中出錯(cuò)解決辦法一樣。
使用 sphinx 需要做以下幾件事
1.有數(shù)據(jù);
2.建立 sphinx 配置文件;
3.生成索引;
4.啟動(dòng) searchd 服務(wù)進(jìn)程,默認(rèn)是9312
5.用 PHP 去連接 sphinx 服務(wù)
啟動(dòng) sphinx
cd /usr/local/coreseek/bin/./searchd
啟動(dòng)命令
searchd 命令參數(shù)介紹:
-c 指定配置文件
--stop 停止服務(wù)
--pidfile 用來顯式指定一個(gè) PID 文件
-p 指定端口
5、php 安裝 sphinx?擴(kuò)展sudo pecl install sphinx
如果出現(xiàn)錯(cuò)誤:“configure: error: Cannot find libsphinxclient headers”
解決方法:
cd coreseek-4.1/csft-4.1/api/libsphinxclient/./configure --prefix=/usr/local/libsphinxclientsudo make && make install
解決完畢!
回去接著執(zhí)行
./configure --with-php-config=/usr/local/php/bin/php-config --with-sphinx=/usr/local/libsphinxclient
sudo make && make install
出現(xiàn)類似“Installing shared extensions: /usr/lib/php5/20090626/sphinx.so”,表示成功。
可以進(jìn)入該目錄下會(huì)發(fā)現(xiàn)生成了一個(gè) sphinx.so 文件
在 php.ini 中加載該 so 文件
extension=/usr/lib/php5/20090626/sphinx.so
重啟 apache ,phpinfo() 中出現(xiàn)這個(gè)表明成功。
相關(guān)文章:
1. ASP實(shí)現(xiàn)加法驗(yàn)證碼2. CSS可以做的幾個(gè)令你嘆為觀止的實(shí)例分享3. ASP刪除img標(biāo)簽的style屬性只保留src的正則函數(shù)4. PHP循環(huán)與分支知識(shí)點(diǎn)梳理5. PHP session反序列化漏洞超詳細(xì)講解6. jsp+servlet簡(jiǎn)單實(shí)現(xiàn)上傳文件功能(保存目錄改進(jìn))7. ASP基礎(chǔ)入門第二篇(ASP基礎(chǔ)知識(shí))8. Spring注入Date類型的三種方法總結(jié)9. ASP基礎(chǔ)知識(shí)Command對(duì)象講解10. ASP動(dòng)態(tài)網(wǎng)頁制作技術(shù)經(jīng)驗(yàn)分享
