coreseek(sphinx)linux安裝以及配置。。

特別注意:如果用的是coreseek 則不用安裝php的sphinx擴展,coreseek都有封裝好的。所以不要走彎路哦。

一定要看官方的文檔,安裝Coreseek是有許多依賴包的,如果這些包沒裝,會出現各種問題。確保都存在這些包的境況下,在安裝coreseek。

以下是官網的yum安裝所需要的包

yum install make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel


本地用的是nginx+php+linux環境 

Coreseek用的Coreseek-4.1

一、Coreseek安裝

 1、下載Coreseek-4.1的源代碼

wget http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.1-beta.tar.gz
tar xvf coreseek-4.1-beta.tar.gz
cd coreseek-4.1-beta

解壓後發現有三個目錄,主要的目錄結構如下

coreseek-4.1-beta/    csft-4.1/          

 coreseek修改sphinx-2.0.1後的代碼        api/            sphinx searchd[查詢API][6]的實現   

 mmseg-3.2.14/       libmmseg分詞庫   

 testpack/           測試和配置示例    README.txt          介紹和安裝指南

2、安裝mmseg-3.2.14 (出現警告可以不用處理)

cd mmseg-3.2.14
./bootstrap
./configure --prefix=/usr/local/mmseg3
make && sudo make install 
至此coreseek的中文分詞包就安裝成功了 usr/local/ 會出現mmseg3 以上步驟參考官網即可http://www.coreseek.cn/products-install/install_on_bsd_linux/

二、安裝libiconv-1.14

先安裝libiconv,用於字符集編碼的轉換。不裝這個 安裝csft-4.1時會報錯

wget http://ftp.gnu.org/pub/gnu/libiconv/libiconv-1.14.tar.gz
tar xvf libiconv-1.14.tar.gz
cd libiconv-1.14
./configure
make && sudo make install && ldconfig (如果沒有出現以下錯誤請略過)

如果你的glibc版本在2.16以上,make時很有可能出現如下錯誤

In file included from progname.c:26:0:
./stdio.h:1010:1: error: ‘gets’ undeclared here (not in a function)
_GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
^
解決辦法如下:

1、在libiconv-1.14目錄下執行 (我用的是這種方法)

wget -O - http://blog.atime.me/static/resource/libiconv-glibc-2.16.patch.gz | gzip -d - | patch -p0

2、或者考慮直接註釋掉srclib/stdio.in.h文件的第698行(應該沒問題),即

//  _GL_WARN_ON_USE (gets, "gets is a security hole - use fgets instead");
然後從新
make && sudo make install && ldconfig 即可

三、安裝csft-4.1

 cd csft-4.1
sh buildconf.sh
./configure --prefix=/usr/local/coreseek  --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql
-includes=/usr/include/mysql/include --with-mysql-libs=/usr/include/mysql/lib(後面的這幾個路徑是指向mysql的安裝目錄根據實際情況來定,官方文檔有)make &&  make install 官網:http://www.coreseek.cn/products-install/install_on_bsd_linux/至此coreseek安裝成功了 usr/local/ 下會出現coreseek文件夾證明安裝成功 如果出現以下錯誤,請從新編譯 生成 

如果sh buildconf.sh最後沒有生成configure腳本,且提示automake: warnings are treated as errors,可以將configure.ac中的這行

AM_INIT_AUTOMAKE([-Wall -Werror foreign])

改爲

AM_INIT_AUTOMAKE([-Wall foreign])

即刪掉-Werror,然後重新運行sh buildconf.sh

如果configure的時候提示沒有安裝MySQL的頭文件,從新安裝一遍mysql即可。(http://jingyan.baidu.com/article/c74d600079be530f6a595dc3.html)安裝mysql連接

如果你的gcc版本在4.7以上,編譯的時候可能會因爲sphinx的一個bug報錯

sphinxexpr.cpp:1746:43: error: ‘ExprEval’ was not declared in this scope, and no declarations were found by argument-dependent lookup at the point of instantiation [-fpermissive]

解決方法參考bug報告裏的一個patch,在csft-4.1目錄下執行

wget -O - http://blog.atime.me/static/resource/sphinxexpr-gcc4.7.patch.gz | gzip -d - | patch -p0

或者你也可以直接修改src/sphixexpr.cpp文件的1746, 1777和1823行,將三行中的ExprEval改爲this->ExprEval


注:最後一步make的時候本人在線上阿里雲安裝出現這個問題,前兩種都沒解決,是用方法三解決,
l這是官網的文檔,
http://www.coreseek.cn/product_install/install_on_bsd_linux/#mysql
## 如果出現undefined reference to `libiconv'的類似錯誤,可以按照如下方法處理:
##方法一:(Linux使用)
## 直接執行:export LIBS="-liconv"
##然後make clean,再次configure後,進行編譯安裝make && make install
## 方法二:
## 首先configure,然後vim src/makefile
## 在其中搜索lexpat,在其後加上 -liconv
## 修改後該行應該爲:-lexpat -liconv -L/usr/local/lib
## 然後再次make && make install
## 方法三:
## 首先configure,然後vim config/config.h
## 在其中搜索USE_LIBICONV,將其後的1修改爲0
## 然後再次make && make install

如果安裝都成功的話測試一下

$ cd testpack
$ cat var/test/test.xml    #此時應該正確顯示中文
$ /usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc var/test/test.xml
$ /usr/local/coreseek/bin/indexer -c etc/csft.conf --all
$ /usr/local/coreseek/bin/search -c etc/csft.conf 網絡搜索




看到如上圖的返回結果,那麼恭喜你 安裝成功,
***************************************以上爲安裝步驟******************************************************************







coreseek 安裝:參考   http://blog.atime.me/note/sphinx-coreseek-summary.html#0315ab   感謝他的文章給予我很大的幫助








發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章