系列文章原载于自己的博客,TOPI.CO (http://topi.co) ,某天不小心就 push 错啦,懒得从头再来,上传到 Ruby-China 来,一是方便自己回顾,另外也方便跟我一样的初学者
###(1) 下载并解压
wget http://www.coreseek.cn/uploads/csft/4.0/coreseek-4.0.1-beta.tar.gz
tar xzvf coreseek-4.0.1-beta.tar.gz
cd coreseek-4.0.1-beta
###(2) 中文测试环境检查:
locale
以下为核心项,locale 为 zh_CN.UTF-8,就可以正常显示和输入中文;locale 设置功能由操作系统自身支持,BSD/Linux 均可开启;该功能,不是 coreseek 提供的! 如果不能正常显示中文,则后面的中文测试部分无法正常进行,但不会影响 coreseek 的实际功能;
LANG=zh_CN.UTF-8
LANGUAGE=zh_CN:zh
LC_ALL="zh_CN.UTF-8"
如果显示的不是 zh_CN.UTF-8,参考第 1 步进行设置:
确保可以正常显示,否则请检查当前环境的 locale 配置,以及当前环境或者客户端已设置好支持 UTF-8 中文字符显示
cat testpack/var/test/test.xml
###(3) 安装 coreseek 开发的 mmseg,为 coreseek 提供中文分词功能
cd mmseg-3.2.14
./bootstrap
(ubuntu 环境下,可能需要使用 ACLOCAL_FLAGS="-I /usr/share/aclocal" ./bootstrap
)
./configure --prefix=/usr/local/mmseg3 --with-gnu-ld --with-readline
(--with-readline 会提示 libreadline 错误,官方是 ./configure --prefix=/usr/local/mmseg3
,运行没有问题)
make && make install
安装完成后,mmseg 使用的词典和配置文件,将自动安装到/usr/local/mmseg3/etc 中
###(4) 中文分词测试,如果显示不正常,请检查当前环境下的 locale 和 UTF-8 中文字符显示设置
/usr/local/mmseg3/bin/mmseg -d /usr/local/mmseg3/etc src/t1.txt
会提示:
中文/x 分/x 词/x 测试/x
中国人/x 上海市/x
Word Splite took: 1 ms.
(提示:coreseek 安装错误预警:如果编译中出现如下错误,可以按照解决方法处理: DWORD 定义冲突: /usr/local/mmseg3/include/mmseg/csr_typedefs.h:64: 错误:相互冲突的声明'typedef unsigned int DWORD' /usr/include/sqltypes.h:97: 错误: 'DWORD'早先被声明为'typedef long unsigned int DWORD' 解决方法:vi /usr/local/mmseg3/include/mmseg/csr_typedefs.h,到64行,注释该行,保存退出重新编译即可!)
###(pre-5) 安装前准备
使用--without-mysql
无法安装,需使用with-mysql
才能安装
先删除 mysql 及一些相关的程序包:
yum remove mysql mysql-connector-odbc mysql-libs mysqlclient15
再安装一些所需的包:
yum install mysql-devel libxml2-devel expat-devel
###(5) 安装 coreseek:
cd ../csft-4.0.1
sh buildconf.sh
./configure --prefix=/usr/local/coreseek --without-python --without-unixodbc --with-mmseg --with-mmseg-includes=/usr/local/mmseg3/include/mmseg/ --with-mmseg-libs=/usr/local/mmseg3/lib/ --with-mysql
make && make install
###(6) 配置测试,测试是否可以正确运行
参见官方提供的测试
###(7) 安装 mongodb 数据源支持
###(8) 输出安装目录至系统变量$PATH
vim /etc/profile,并添加以下几行
if [ -d '/usr/local/mmseg3/bin' ]; then
export PATH=/usr/local/mmseg3/bin:$PATH
fi
if [ -d '/usr/local/coreseek/bin' ]; then
export PATH=/usr/local/coreseek/bin:$PATH
fi