痛定思痛,终得成功 。。
环境linux的Centos-5
1 介绍
coreseek 给予Sphinx研发的独立搜索引擎, 适用于行业/垂直搜索、论坛/站内搜索、数据库搜索、文档/文献检索、信息检索、数据挖掘等应用场
coreseek官网: http://www.coreseek.cn/
2 版本 :稳定版3.2 测试版 4.1 最新版5
1)预装软件包,一键安装:
yum install make gcc g++ gcc-c++ libtool autoconf automake imake mysql-devel libxml2-devel expat-devel
2) 基础的依赖包 m4、autoconf、automake、libtool 的升级与安装
可以用rpm -qa | grep 包名 ,来查看预装的包的版本和名称,可以用whereis 命令来找到之前的安装包的位置
升级与安装说明:http://www.coreseek.cn/products-install/install_on_macosx/#sysdep
3)安装MySQL,提供MySQL数据源支持
安装的时候出点问题,因为我之前安装过server 和client这两个包,但因为coreseek需要用到Mysql的头文件和库文件,
但我系统中没有,之后安装了devel和share安装包就找到了。
linux各种版本软件查找地址:http://mirrors.sohu.com/
Mysql的安装包和版本:
MySQL-server-community-5.1.73-1.rhel5
MySQL-client-community-5.1.73-1.rhel5
MySQL-devel-community-5.1.73-1.rhel5
MySQL-shared-5.5.34-1.linux2.6
头文件和库文件的处理:http://www.coreseek.cn/products-install/install_on_macosx/#sysdep
但我在安装的时候直接引用Mysql自己的头和库并没有进行拷贝。
4) 安装coreseek
$ curl -O -L http://www.coreseek.cn/uploads/csft/3.2/coreseek-3.2.14.tar.gz
$ tar xzvf coreseek-3.2.14.tar.gz
$ cd coreseek-3.2.14
#安装mmseg,分词库
$ cd mmseg-3.2.14
$ ./bootstrap
$ ./configure --prefix=/usr/local/mmseg3
$ make && make install
##安装coreseek,需提前安装mysql以支持mysql数据源
$ cd csft-3.2.14
$ 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 --with-mysql-includes=/opt/local/include/mysql5/mysql --with-mysql-libs=/opt/local/lib/mysql5/mysql
$ make && make install
$ cd ..
--with-mysql-includes=/opt/local/include/mysql5/mysql Mysql头文件所在的目录
--with-mysql-libs=/opt/local/lib/mysql5/mysql Mysql二进制文件所在的目录
5) Mysql为数据源的配置文件配置(主索引和增量索引配置) ,一般主索引每天午夜跑一次,增量索引半分钟或者一分钟跑一次
可以根据安装包下面的etc/sphinx.conf.dist 文件修改
# 主索引+增量索引处理数据 ,主索引一天重建一次,增量索引 几面中创建一次解决近似更新的问题
# 1 documents Source 数据来源
source documents
{
type = mysql
sql_host = 192.168.142.128
sql_user = root
sql_pass = 123456
sql_db = test
sql_port = 3306
sql_query_pre = SET NAMES utf8
sql_query_pre = REPLACE INTO sph_counter SELECT 1, MAX(id) FROM documents
sql_query = SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content FROM documents where id<=( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 )
sql_attr_uint = group_id
sql_attr_timestamp = date_added
sql_query_info_pre = SET NAMES utf8
sql_query_info = SELECT * FROM documents WHERE id=$id
}
# 1 web_tags Source delta,增量数据来源
source documentsDelta : documents
{
sql_query_pre = SET NAMES utf8
sql_query = SELECT id, group_id, UNIX_TIMESTAMP(date_added) AS date_added, title, content FROM documents where id>( SELECT max_doc_id FROM sph_counter WHERE counter_id=1 )
}
# 1 documentsIndex Index 索引
index documentsIndex
{
source = documents
path = /usr/local/coreseek/var/data/documents1
docinfo = extern
mlock = 0
morphology = none
min_word_len = 1
html_strip = 0
charset_dictpath = /usr/local/mmseg3/etc/
charset_type = zh_cn.utf-8
}
# 1 documents1 Index delta 增量索引
index documents1Delta : documentsIndex
{
source = documentsDelta
path = /usr/local/coreseek/var/data/documents1Delta
}
#---------------------------------------------------------------------------------------------------------------
#全局index定义
indexer
{
mem_limit = 1024M
}
#searchd服务定义
searchd
{
listen = 9312
read_timeout = 50
max_children = 30
max_matches = 1000000
seamless_rotate = 0
preopen_indexes = 0
unlink_old = 1
pid_file = /usr/local/coreseek/var/log/searchd_mysql.pid
log = /usr/local/coreseek/var/log/searchd_mysql.log
query_log = /usr/local/coreseek/var/log/query_mysql.log
}
6)测试部署是否正确 /usr/local/coreseek/bin/indexer -c ../etc/csft.conf
创建整体索引:/usr/local/coreseek/bin/indexer -c ../etc/csft.conf --all --rotate
开启搜索服务: /usr/local/coreseek/bin/searchd -c ../etc/csft.conf
停止搜索服务: /usr/local/coreseek/bin/searchd --stop
重建单个索引:
/usr/local/coreseek/bin/indexer documentsIndex --rotate 重建主索引,自动生效
/usr/local/coreseek/bin/indexer documents1Delta --rotate 重建增量索引,不重启自动生效
查询检索包含关键字“国外”的数据
/usr/local/coreseek/bin/search -c ../etc/csft.conf -a
7)
你需要把启动命令加到开机自启动里
把重建索引命令加到计划任务里每天执行
下面两个任务,第一个增量每分钟跑一次,第二个主索引,每天1点跑一次
linux任务cron使用(http://linux.chinaunix.net/techdoc/beginner/2009/10/25/1141243.shtml)
*/1 * * * * /usr/local/coreseek/bin/delta.sh
* 1 * * * /usr/local/coreseek/bin/main.sh
把下面两个命令分别放到各自的索引sh中即可
/usr/local/coreseek/bin/indexer documentsIndex --rotate 重建主索引,自动生效
/usr/local/coreseek/bin/indexer documents1Delta --rotate 重建增量索引,不重启自动生效
8) 附件中为java调用的程序 和测试数据库