安装环境
- 系统环境
- centos7.2
- 1核2G
- 软件环境
- coreseek-3.2.14
安装mmseg
- 更新依赖包和安装编译环境
yum -y install m4 autoconf automake libtoolyum -y install gcc gcc-c++ wgetyum -y install mysql-devel
安装coreseek
tar -xzvf coreseek-3.2.14.tar.gzcd coreseek-3.2.14cd mmseg-3.2.14/./bootstrap./configure --prefix=/usr/local/mmseg3makemake installcd ../csft-3.2.14/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 --host=armmakemake install
<font color='red'>在安装csft的过程中出现了三种错误情况,错误情况如下错误记录,可以参考修改即可</font>
配置coreseek配置文件
配置文件主要修改的几个地方如下,具体的修改信息请参见 coreseek配置文件 目录的进行配置
source src1 { type = mysql #数据库类型sql_host = localhost # MySQL主机IPsql_user = root # MySQL用户名sql_pass = 123 # MySQL密码sql_db = test # MySQL数据库sql_port = 3306 # MySQL端口sql_sock = /tmp/mysql.sock #如果是linux下需要开启,指定sock文件sql_query_pre = SET NAMES UTF8 # MySQL检索编码sql_query_pre = SET SESSION query_cache_type=OFF #关闭缓存sql_query = \ #获取数据的SQL语句 SELECT id, title, content FROM post#sql_attr_uint = group_id #对排序字段进行注释#sql_attr_timestamp = date_added #对排序字段进行注释sql_query_info = SELECT * FROM post WHERE id=$id} #这行不需要修改source srclthrottled:srcl #继承主数据源主数据源索引:index text1{ source = src1 #索引源声明charset_type = utf-8 #数据编码(设置成utf8)charset_table = #上面指定了utf-8,这里需要开启}增量索引index testlstemmed:test1 #先进行注释index distl #分布式也注释掉索引器设置indexer { mem_limit = 256M # 内存大小限制 默认是 32M, 推荐为 256M } #其他用默认即可sphinx服务进程searchd的相关配置searchd {} #全部用默认的就可以了
除了上述的配置项外还需要单独配置几项(如果你是安装的sphinx则进行上述配置即可,如果是coreseek则还需要配置下述内容)
index test1{#stopwords = G:\data\stopwords.txt#wordforms = G:\data\wordforms.txt#exceptions = /data/exceptions.txt#charset_type = sbcs添加下面这两行,意思是把中文分词加入到配置文件中charset_type = zh_cn.utf-8charset_dictpath = /usr/local/mmseg/etc/ #你安装mmseg的目录}
数据库操作
// 创建数据库create database test;// 创建数据表userinfo | CREATE TABLE `userinfo` ( `id` int(4) NOT NULL AUTO_INCREMENT, `name` varchar(10) NOT NULL, `age` int(3) NOT NULL, `sex` enum('女','男') NOT NULL, PRIMARY KEY (`id`)) ENGINE=InnoDB AUTO_INCREMENT=7 DEFAULT CHARSET=utf8mb4// 插入数据INSERT INTO `userinfo` VALUES (1,'张三',12,'女'),(2,'李四',13,'男'), (3,'小明',12,'女'),(4,'小红',13,'女'),(5,'小四',12,'女'),(6,'章泽天',13,'女');
创建索引数据(indexer)
// 第一次创建索引/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf --all// 第二次创建所以(当我们第一次创建索引之后,对数据表做了新的操作再按照上面的方式生成索引是会多增加一个参数)/usr/local/coreseek/bin/indexer -c /usr/local/coreseek/etc/csft.conf -rotate option
如果上述的操作执行正确,则会提示如下信息
Coreseek Fulltext 3.2 [ Sphinx 0.9.9-release (r2117)]Copyright (c) 2007-2011,Beijing Choice Software Technologies Inc (http://www.coreseek.com) using config file '/usr/local/coreseek/etc/csft.conf'...WARNING: no such index '-rotate', skipping.WARNING: no such index 'option', skipping.total 0 reads, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avgtotal 0 writes, 0.000 sec, 0.0 kb/call avg, 0.0 msec/call avg
测试索引数据(search)
/usr/local/coreseek/bin/search '小'
正常情况下会出现下述信息
Coreseek Fulltext 3.2 [ Sphinx 0.9.9-release (r2117)]Copyright (c) 2007-2011,Beijing Choice Software Technologies Inc (http://www.coreseek.com) using config file '/usr/local/coreseek/etc/csft.conf'...index 'test1': query '小 ': returned 3 matches of 3 total in 0.004 secdisplaying matches:1. document=3, weight=12. document=4, weight=13. document=5, weight=1words:1. '小': 3 documents, 3 hits
启动searchd服务
该服务是可以在/usr/local/coreseek/etc/csft.conf文件中的searchd配置项中配置,默认服务的端口已经配置,可以不单独做配置
// 启动服务/usr/local/coreseek/bin/searchd -c /usr/local/coreseek/etc/csft.conf// 检测服务启动情况[root@test ~]# netstat -anp | grep 9312tcp 0 0 0.0.0.0:9312 0.0.0.0:* LISTEN 31672/searchd
创建测试代码
测试代码可以参见分享文件中的 测试代码 目录
require './api/sphinxapi.php';$sphinx = new SphinxClient();$sphinx->SetServer('127.0.0.1', 9312);$sphinx->SetArrayResult(true);$sphinx->SetMatchMode(SPH_MATCH_ALL);$sphinx->SetSortMode(SPH_SORT_RELEVANCE);$result = $sphinx->query('小', '*');var_dump($result);
查询出的结果如下
array(10) { ["error"]=> string(0) "" ["warning"]=> string(0) "" ["status"]=> int(0) ["fields"]=> array(3) { [0]=> string(4) "name" [1]=> string(3) "age" [2]=> string(3) "sex" } ["attrs"]=> array(0) { } ["matches"]=> array(3) { [0]=> array(3) { ["id"]=> int(2) ["weight"]=> string(1) "1" ["attrs"]=> array(0) { } } [1]=> array(3) { ["id"]=> int(3) ["weight"]=> string(1) "1" ["attrs"]=> array(0) { } } [2]=> array(3) { ["id"]=> int(4) ["weight"]=> string(1) "1" ["attrs"]=> array(0) { } } } ["total"]=> string(1) "3" ["total_found"]=> string(1) "3" ["time"]=> string(5) "0.003" ["words"]=> array(1) { ["小"]=> array(2) { ["docs"]=> string(1) "3" ["hits"]=> string(1) "3" } }}
coreseek错误记录
安装coerseek问题一
cd ../csft-3.2.14/ 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 --host=arm vi src/sphinxexpr.cpp #然后将所有的T val = ExprEval ( this->m_pArg, tMatch ).....修改为T val =this->ExprEval ( this->m_pArg, tMatch ),共有三处。
安装coreseek错误二
make[2]: *** [tokenizer_zhcn.o] Error 1make[2]: Leaving directory `/home/zyf/zyfwork/csft3.1b3/src’make[1]: *** [all] Error 2make[1]: Leaving directory `/home/zyf/zyfwork/csft3.1b3/src’make: *** [all-recursive] Error 1/usr/local/sphinx/src/sphinx.cpp:15557: undefined reference to `libiconv_open’libsphinx.a(sphinx.o)(.text+0x53a01):/usr/local/sphinx/src/sphinx.cpp:15575: undefinedreference to `libiconv’libsphinx.a(sphinx.o)(.text+0x53a28):/usr/local/sphinx/src/sphinx.cpp:15581: undefinedreference to `libiconv_close’collect2: ld returned 1 exit statusmake[2]: * [indexer] Error 1make[2]: Leaving directory `/usr/local/sphinx/src’make[1]: * [all] Error 2make[1]: Leaving directory `/usr/local/sphinx/src’make: * [all-recursive] Error 1修改 configure 文件把 #define USE_LIBICONV 0 最后的数值由1改为0
安装coreseek问题三
db_interface_mysql.h:32:25: 致命错误:mysql/mysql.h:没有那个文件或目录// ubuntu系统解决方案sudo apt-get install libmysqlclient-dev// centos7解决方案sudo yum install mysql-devel
参考链接
coreseek额外说明
安装路径
/usr/local/coreseek
配置目录
/usr/local/coreseek/etc/
执行程序目录
/usr/local/coreseek/bin/
配置文件说明
进入配置目录,你会找到如下几个文件
-rw-r--r--. 1 root root 905 10月 13 21:27 example.sql-rw-r--r--. 1 root root 18954 10月 13 21:27 sphinx.conf.dist-rw-r--r--. 1 root root 956 10月 13 21:27 sphinx-min.conf.dist
将sphinx.conf.dist文件复制一份名为csft.conf即可.其余文件可以不管.
执行程序说明
进入执行程序目录可以看到如下几个文件,具体参考请见
-rwxr-xr-x. 1 root root 7032560 10月 13 21:27 indexer // 生成索引程序-rwxr-xr-x. 1 root root 6650552 10月 13 21:27 indextool // 调试程序-rwxr-xr-x. 1 root root 6740544 10月 13 21:27 search // 搜索程序-rwxr-xr-x. 1 root root 7970448 10月 13 21:27 searchd // 提供客户端查询索引服务-rwxr-xr-x. 1 root root 6370256 10月 13 21:27 spelldump // 提取字典内容
分享文件目录说明
├── api.zip // coreseek类文件(该文件和测试代码目录下的api.zip是一样的)├── coreseek-3.2.14.tar.gz // coreseek安装程序文件├── coreseek配置文件 │ └── csft.conf // 上述 配置coreseek配置文件 步骤中提交到的配置文件├── 测试代码 │ ├── api.zip│ └── index.php // 测试代码└── 测试数据库 └── test.sql // 测试数据库