迅搜是开源免费、高性能、多功能简单易用的专业全文检索技术方案,帮助一般开发者针对既有的海量数据,快速而方便地建立自己的全文搜索引擎。全文检索可以帮助您降低服务器搜索负荷、极大程度的提高搜索速度和用户体验。
讯搜的安装和开机启动脚本搭建过程:一、官网下载讯搜软件xunsearch-full-1.4.10.tar.bz2wget -c http://www.xunsearch.com/site/downfile?file=xunsearch-full-1.4.10.tar.bz2二、解压软件包tar -xjf xunsearch-full-1.4.10.tar.bz2
cd xunsearch-full-1.4.10三、安装迅搜,安装目录:/usr/local/xunsearch/chmod +x setup.sh
sh setup.sh四、启动迅搜[root@localhost] /usr/local/xunsearch/bin/xs-ctl.sh restart
#启动信息
INFO: re-starting server[xs-indexd] ... (BIND:127.0.0.1:8383)
INFO: re-starting server[xs-searchd] ... (BIND:127.0.0.1:8384)五、设置开机启动shell脚本,脚本是自己写的,写的比较简单,但能用
1.新建脚本文件vim /etc/init.d/xunsearch
chmod +x xunsearch
2.启动shell脚本代码#! /bin/bash
# chkconfig: 345 86 16
#author:zuoping
name=xs-ctl.sh
path=/usr/local/xunsearch/bin/
case "$1" in
start)
${path}${name} start
echo '迅搜服务已开启'
;;
stop)
${path}${name} stop
echo '迅搜服务已停止'
;;
restart)
${path}${name} restart
echo '迅搜服务已重启'
;;
*)
echo "use /etc/init.d/ start|stop|restart"
;;
esac
3.运行脚本测试#开启
./xunsearch start
#停止
./xunsearch stop
#重启
./xunsearch restart六、脚本加入系统服务chkconfig --add xunsearch
chkconfig xunsearch on七、重启系统生效,运行服务#查看迅搜是否开启,如果没有则设置开机启动不成功
ps -ef |grep xs-searchd
#服务的重启、开启和停止操作
service xunsearch restart
service xunsearch start
service xunsearch stop
完成迅搜全文搜索服务端的搭建。八、查看讯搜离线手册,php使用讯搜api处理数据
九、导入数据到迅搜和php查询迅搜中的数据
在迅搜中文分词查询数据的时候,是需要先把数据库中的数据先导入到迅搜中,再进行查询导入的数据。
php数据导入和查询代码:
1.复制迅搜sdk到网站目录中,供php调用cp /usr/local/xunsearch/sdk/php /usr/local/nginx/html/xunsou
2.配置迅搜配置文件vim /xunsearch/app/demo.ini
#配置文件内容
#项目名设置,一个表可以设置一个项目
project.name = demo
#字符编码设置
project.default_charset = utf-8
#迅搜端口设置
server.index = 8383
server.search = 8384
#字段设置,[]中的字符串对应数据库中表的字段,具体使用可以看上面手册
[id]
type = id
[title]
index = self
[seo]
index = self
[content]
type = body
3.引入sdk中的类文件并实例化,导入数据到迅搜和查询搜索中的数据操作php代码
3.1导入数据//引入迅搜sdk类文件
require '/xunsearch/lib/XS.php';
// 建立 XS 对象,项目名称为:demo
$xs = new XS('demo');
//清空数据
$xs->index->clean();
//测试数据数据,实际使用可以去数据库中查询
$data = array(
'id' => 235,
'title' => '测试文档的标题',
'seo' => '测试文档子标题',
'content' =>'测试文档内容'
);
//插入数据
$doc = new XSDocument;
$doc->setFields($data);
$xs->index->add($doc);
3.2查询数据//插入数据后,进行中文分词查询
$docs = $xs->search->search('测试');
var_dump($docs);
需要注意的是,php代码每次搜索的时候,搜索的是导入迅搜的数据,不会去读数据库的数据,数据库的数据是通过php导入到迅搜中。(迅搜和mysql之间的关系是导入和获取关系)为了保证数据的实时,需要通过脚本进行定时导入数据到迅搜中的操作。或者每当数据更新时进行数据导入操作。