转载
转载:centos7 安装coreseek 4.1 自动更新+主索引+增量索引 以及php中coreseek的使用
下载安装:
下载地址:http://files.opstool.com/man/coreseek-4.1-beta.tar.gz
安装配置:
tar zxvf coreseek-4.1-beta.tar.gz
cd coreseek-4.1-beta
cd mmseg-3.2.14
./bootstrap
./configure --prefix=/usr/local/mmseg3
make && make install
cd ..
cd csft-4.1
sh buildconf.sh //(这个地方有可能生成不了configure文件,需要修改部分文件,具体内容参考http://blog.csdn.net/jcjc918/article/details/39032689)
./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=/www/server/mysql
make && make install
生成configure( sh buildconf.sh
)报错的办法:
报错提示:
libstemmer_c/mkinc.mak:10: warning: source file 'runtime/utilities.c' is in a subdirectory,
libstemmer_c/mkinc.mak:10: but option 'subdir-objects' is disabled
libstemmer_c/Makefile.am:3: 'libstemmer_c/mkinc.mak' included from here
libstemmer_c/mkinc.mak:10: warning: source file 'libstemmer/libstemmer.c' is in a subdirectory,
libstemmer_c/mkinc.mak:10: but option 'subdir-objects' is disabled
libstemmer_c/Makefile.am:3: 'libstemmer_c/mkinc.mak' included from here
/usr/local/share/automake-1.14/am/library.am: warning: 'libstemmer.a': linking libraries using a non-POSIX
/usr/local/share/automake-1.14/am/library.am: archiver requires 'AM_PROG_AR' in 'configure.ac'
libstemmer_c/Makefile.am:2: while processing library 'libstemmer.a'
/usr/local/share/automake-1.14/am/library.am: warning: 'libsphinx.a': linking libraries using a non-POSIX
/usr/local/share/automake-1.14/am/library.am: archiver requires 'AM_PROG_AR' in 'configure.ac'
src/Makefile.am:14: while processing library 'libsphinx.a'
解决方案:
1. 在 csft-4.1/buildconf.sh 文件中,查找
&& aclocal \
在其后面加上:
&& automake --add-missing \
2. 在 csft-4.1/configure.ac 文件中,查找:
AM_INIT_AUTOMAKE([-Wall -Werror foreign])
改为:
AM_INIT_AUTOMAKE([-Wall foreign])
继续查找:
AC_PROG_RANLIB
后面加上
AM_PROG_AR
3. 最后,在 csft-4.1/src/sphinxexpr.cpp 文件中, 替换所有:
T val = ExprEval ( this->m_pArg, tMatch );
成为:
`T val = this->ExprEval ( this->m_pArg, tMatch ); `
结束
配置示例文件:
source bt
{
type = mysql
sql_host = localhost
sql_user = p2p
sql_pass = p2p
sql_db = p2p
sql_port = 3306
sql_query_pre = SET NAMES utf8
sql_query_pre = truncate table sphinx_temp_id
sql_query_pre = REPLACE INTO sphinx_temp_id SELECT 1,MAX(id) FROM info
sql_query = \
SELECT id, name \
FROM info WHERE id<=(SELECT temp_id FROM sphinx_temp_id)
}
source increment : bt
{
sql_query_pre = SET NAMES utf8
sql_query = \
SELECT id, name \
FROM info WHERE id>(SELECT temp_id FROM sphinx_temp_id)
sql_query_post = UPDATE sphinx_temp_id SET temp_id=(SELECT max(id) FROM info) where id=1
}
index bt
{
source = bt
path = /usr/local/coreseek/var/data/bt
charset_type = zh_cn.utf-8
charset_dictpath = /usr/local/mmseg3/etc
}
index increment : bt
{
source = increment
path = /usr/local/coreseek/var/data/increment
}
indexer
{
mem_limit = 32M
}
searchd
{
listen = 9312
listen = 9306:mysql41
log = /usr/local/coreseek/var/log/searchd.log
binlog_path = /usr/local/coreseek/var/log/binlog
query_log = /usr/local/coreseek/var/log/query.log
read_timeout = 5
client_timeout = 300
max_children = 30
pid_file = /usr/local/coreseek/var/log/searchd.pid
max_matches = 1000
seamless_rotate = 1
preopen_indexes = 1
unlink_old = 1
mva_updates_pool = 1M
max_packet_size = 8M
max_filters = 256
max_filter_values = 4096
max_batch_queries = 32
workers = threads # for RT to work
}
其中sphinx_temp_id表需要在数据库中自定义创建如下:
create table if not exists sphinx_temp_id(
id int(11) ,
temp_id int(11)
)
## 创建定时任务:
crontab任务,凌晨执行一次,主索引,目的是为了清空增量索引
/usr/local/coreseek/bin/searchd --stop
/usr/local/coreseek/bin/indexer --all
/usr/local/coreseek/bin/searchd
crontab任务,每5分钟执行执行一次,增量索引,目的是为了尽量实时更新,将新增加的内容生成增量索引,然后合并到主索引
/usr/local/coreseek/bin/indexer increment --rotate
/usr/local/coreseek/bin/indexer --merge bt increment --rotate
常用命令:
生成索引
/usr/local/coreseek/bin/indexer --all
/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf --all
/usr/local/coreseek/bin/indexer bt
/usr/local/coreseek/bin/indexer --merge bt increment
启动coreseek
/usr/local/coreseek/bin/searchd
/usr/local/coreseek/bin/searchd --stop
搜索测试
/usr/local/coreseek/bin/search 测试关键字