mmseg
csft
testpack
http://blog.csdn.net/baidu_30000217/article/details/51771263 参考文章
yum install -y libtool automake
cd coreseek-3.2.14
cd mmseg-3.2.14/
./bootstrap
./configure --prefix=/usr/local/mmseg
make
make install
cd ..
cd csft-3.2.14/
这里我们要修改 src/sphinxexpr.cpp 文件,将该文件中的 1013、1047、1080 行的 ExprEval 改为
this->ExprEval(这里的行数跟网上的教程说的行数不一样,可能是版本的问题吧,但是如果你用的是我提供的版本,该行数是正确的),懂点 C++
的同学也可以自己看看 ExprEval 错在哪里。
改完上面所说的问题后:
./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/
make && make install
###################z
中文分词算法分类
1 基于字符串匹配的分词方法
机械分词法,基于词典,在足够大的词典中进行词条匹配 若找到了这个字符串,就算匹配成功(识别出一个词)
三个要素
分词词典
文档扫描顺序 ---- 正向 逆向 双向
匹配原则 ---- 最大 最小 逐词 最佳
2 基于理解的分词方法
3 基于统计的分词方法
什么时候用sphinx
1 网站数据量日渐增大,对于搜索有更高的要求
2 网站用户反映,搜索速度变的很慢
3 用户很多数据很多处理大数量的并发查询
4 设计一个千万级或亿级别的分布式架构
配置文件
cp sphinx.conf.dist csft.conf
sphinxclient.c:1216:13: error: static declaration of 'sock_close' follows non-static declaration
static void sock_close ( int sock )
sphinx集成到php程序中,有两种方式
1 sphinx php 模块phpize???
cd /usr/local/src/coreseek-3.2.14/csft-3.2.14/api/libsphinxclient
./configure && make && make install
cd /usr/local/src/php-7.1.0/ext/sphinx-1.3.3
/usr/local/fastphp71/bin/phpize
./configure --with-php-config=/usr/local/fastphp71/bin/php-config --with-sphinx
make && make install
出现这句话 说明安装没啥问题了
Installing shared extensions: /usr/local/fastphp71/lib/php/extensions/no-debug-non-zts-20160303/
接下来修改配置文件
2 sphinx api 类(include)/usr/local/src/coreseek-3.2.14/testpack/api/sphinxapi.php
使用sphinx需要做以下事情
1 得有数据
2 建立sphinx配置文件
3 生成索引 indexer --all
4 启动sphinx Searchd服务进程 开启9312端口:/usr/local/coreseek/bin/searchd
-c 指定配置文件
--stop 停止服务
--pidfile 显示指定一个pid文件
-p 指定端口
5 用php客户程序去链接sphinx服务
#############实时索引#####
增量索引
主数据源 id 1、2、3
增量数据源 id 4 每5分钟索引一次,晚上重新进行一次主索引(延迟5分钟)
创建一个计数器表
create table sph_counter(counter_id int unsigned not null primary key auto_increment,max_doc_id,int not null);
修改sphinx配置文件添加到另外两个sql_query_pre后面
sql_query_pre=replace into sphinx_counter select 1,max(id) from t1
再修改sql_query 加上条件
sql_query=select id,tit,cnf from t1 where id <= (select max_doc_id from sph_counter where counter_id = 1)
设置增量数据源
soucre delta:main{
sql_query_pre=set names utf8;
sql_query=select id,tit,cnt from t1 where id > (select max_doc_id from sph_counter where counter_id=1);
}
设置增量索引
index delta:main{
source=delta
path=/usr/local/coreseek/var/data/delta
}
开始测试增量索引
./indexer --all --rotate
先读主数据源,更新到计数器表,生成索引到主数据索引
将增量数据新增索引
./indexer --delta --rotate
写两个shell脚本 建两个日志文件
main.sh
!/bin/bash
main.sh
/usr/local/coreseek/bin/indexer main --rotate >>/usr/local/coreseek/var/log/main.log
delta.sh
!/bin/bash
delta.sh
/usr/local/coreseek/bin/indexer delta --rotate >>/usr/local/coreseek/var/log/delta.log
crontab -e
*/12 * * * * /usr/local/coreseek/init/delta.sh
30 2 * * * /usr/local/coreseek/init/main.sh
给两个shell脚本加权限
chmod a+x /usr/local/coreseek/init/*