LAMP+Coreseek中文检索引擎使用详解(2)

在主数据源的设置中,sql_query 和 sql_query_info 字段都是 From document,这里用的是 安装 coreseek 时提供的测试表,位于 /usr/local/coreseek/etc/example.sql,根据设置,我们创建数据库和导入测试数据表:

mysql -uroot -pzhongjin CREATE DATABASE test; USE test; #导入数据 SOURCE /usr/local/coreseek/etc/example.sql; SHOW TABLES; #+----------------+ #| Tables_in_test | #+----------------+ #| documents | #| tags | #+----------------+ SELECT * FROM documents;

现在该表里面有四条数据,待会我们就是用该表来测试 sphinx。

现在配置文件有了,测试数据也有了,下面就是测试了。

三、sphinx搜索测试:

1、先创建索引:在新增数据之后,都得重新索引一次

创建索引命令:indexer,
-c 指定配置文件
–all 对所有索引重新编制索引
–rotate 用于轮换索引,主要是在不停止服务的时候增加索引
–merge 合并索引

针对 test:documents 创建索引

#基本所有的命令都在该目录下 cd /usr/local/coreseek/bin ./indexer -c /usr/local/coreseek/etc/sphinx.conf --all

这里写图片描述

可以看到,我们的配置文件,还有就是我们索引的是 main 主数据源,总共有四个文档,正好对应数据表。

2、查询关键字

查询命令:search
-c 指定配置文件

查关键字 test:

cd /usr/local/coreseek/bin ./search -c /usr/local/coreseek/etc/sphinx.conf test

这里写图片描述

查询的结果如上图所示,图中的结果表明,test 在第一篇文档中出现两次,在第二篇文档中出现两次,在第三篇文档中出现一次,总共在三个文档中出现,总共出现5次。

查关键字 group:

./search -c /usr/local/coreseek/etc/sphinx.conf group

这里写图片描述


从结果中可以发现,group只在一个文档中出现一次,但是查表发现,数据表中有 group 和 groups,为什么 groups 没有被匹配出来?因为在英文分词中是以空格进行分词的,因此group和groups是两个不同的单词。

现在我们插入一条数据,看看能不能查询出来:

mysql -uroot -pzhongjin test INSERT INTO documents(group_id,group_id2,date_added,title,content) VALUES(3,9,NOW(),'zhongjin','zhongjin is a student');

查关键字 zhongjin

./search -c /usr/local/coreseek/etc/sphinx.conf zhongjin;

结果是 zhongjin 关键字在0个文档中出现0次,为什么?

因为我们没有索引该条记录呀,前面不是说了嘛,新增数据之后,都得重新进行索引(这个有解决方案,后面有机会再说)

./indexer -c /usr/local/coreseek/etc/sphinx.conf --all ./search -c /usr/local/coreseek/etc/sphinx.conf zhongjin;

这回出来了吧。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/24e1f2740679ecac0e3e3a54e481478f.html