首頁  >  文章  >  後端開發  >  linux下編譯安裝Sphinx、中文分詞coreseek及PHP的sphinx擴充

linux下編譯安裝Sphinx、中文分詞coreseek及PHP的sphinx擴充

伊谢尔伦
伊谢尔伦原創
2016-11-25 15:57:222080瀏覽

Linux環境為:CentOS5.5、Ubuntu12.04

1、軟體下載

sphinx-2.1.3

coreseek-4.1

2、安裝sphinxp -with-mysql:指定mysql 安裝路徑

tar zxvf sphinx-2.1.3.tar.gz //解压sphinx包
cd sphinx-2.1.3
./configure --prefix=/usr/local/sphinx --with-mysql=/usr/local/mysql/

編譯並安裝

安裝成功之後,sphinx 會形成三個指令:

sudo make && make install

註:上述指令預設在/usr/local/sphinx/bin目錄下

、配置sphinx及使用

indexer 创建索引命令
searchd 启动进程命令
search 命令行搜索命令

進入sphinx 的etc 目錄下

cd /usr/local/sphinx/etc

拷貝一份配置文件,並且命名為sphinx.conf。

將該目錄下的example.sql檔案匯入本地資料庫名為test的資料庫。

修改配置信息,將其中資料庫連接資訊修改為你的本地資料庫資訊。

接著使用以下指令匯入資料並產生索引:

sudo cp sphinx.conf.dist sphinx.conf

如果執行indexer指令報錯:

$ cd /usr/local/sphinx/etc
$ sudo /usr/local/sphinx/bin/indexer --all

則可能是因為mysql.sock的位置問題,在本機中,改位置是/tmp/mysql.sock(與安裝mysql時設定有關),在sphinx.conf中取消這一行的註解即可(去掉前面的#號):

ERROR: index 'test1stemmed': sql_connect: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock'

再次執行上述indexer指令,一切正常。

執行查詢的話可以使用以下指令:

#sql_sock                = /tmp/mysql.sock

在執行search搜尋過程中可能報錯:

$ cd /usr/local/sphinx/etc
$ sudo /usr/local/sphinx/bin/search test

我試著在sphinx.conf中的searchd模組中修改thread_stack的值,但沒有解決問題,後來註解掉source src1中的如下這行

index 'test1': search error: query too complex, not enough stack (thread_stack=-2665032K or higher required).

再執行search指令,就OK了。

後台啟動sphinx使用下列指令:

#sql_query_info         = SELECT * FROM documents WHERE id=$id

使用php腳本執行搜素指令,可使用下列指令:

$ cd /usr/local/sphinx/etc
$ sudo /usr/local/sphinx/bin/searchd

輸入結果如下:

$ cd sphinx/api
$ php test.php test

4、安裝coreseek -4.1、mmseg-3.2.14

先安裝mmseg

Query 'test ' retrieved 3 of 3 matches in 0.022 sec.
Query stats:
'test' found 10 times in 6 documents
Matches:
1. doc_id=1, weight=101, group_id=1, date_added=2014-01-20 10:07:37
2. doc_id=2, weight=101, group_id=1, date_added=2014-01-20 10:07:37
3. doc_id=4, weight=1, group_id=2, date_added=2014-01-20 10:07:37

編譯如果出現錯誤:「config.status: error: cannot find input file: src/Makefile.in」

解決方案:安裝安裝解決方案coreseek)

tar zxvf coreseek-4.1.tar.gz

安裝完成之後和sphinx安裝後一樣,需要導入coreseek/etc/example.sql檔案到本機資料庫,然後拷貝sphinx.conf.dist到csft.conf,修改其中資料庫使用者名稱及密碼,測試出錯和sphinx中出錯解決方法一樣。

使用sphinx 需要做以下幾件事

1.有資料;

2.建立sphinx 設定檔;

3.產生索引;

4.啟動searchd 服務流程,預設是93125. PHP 去連接sphinx 服務

啟動sphinx

cd mmseg-3.2.14/
./configure --prefix=/usr/local/mmseg

啟動指令

searchd 指令參數介紹:

-c 指定設定檔

--stop 停止服務

-c 指定設定檔

--stop 停止服務-p 指定連接埠

5、php 安裝sphinx 擴充

sudo apt-get install automake
aclocal
libtoolize --force 我运行后有一个错误,没管它。
automake --add-missing
autoconf
autoheader
make clean
./configure --prefix=/usr/local/mmseg
make
sudo make install

如果發生錯誤:「configure: error: Cannot find libsphinxclient headers」

解決方法:

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

解決完畢!

回去接著執行

cd /usr/local/coreseek/bin/
./searchd

出現類似“Installing shared extensions: /usr/lib/php5/20090626/sphinx.so”,表示成功。

可以進入該目錄下會發現生成了一個sphinx.so 檔案

在php.ini 中會發現產生了一個sphinx.so 檔案

在php.ini 中載入該so 檔

extension=/usr/lib/php5/20090626/sphinx.so

重啟) 中出現這個表示成功。

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn