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/
編譯並安裝
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 test4、安裝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重啟) 中出現這個表示成功。