最近公司的项目需要全文搜索的功能,网上有人说用迅搜可以,特地研究了下。文档看了半天,愣是没看懂;看了两天才看出来点东西,然后跟着文档动手测试,有点理解了,总结一下 ,希望能帮助以后用到的phper.
一,安装
wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2
tar -xjf xunsearch-full-latest.tar.bz2
cd xunsearch-full-1.3.0/
sh setup.sh
安装过程中会提示输入安装目录(如:/usr/local/xunsearch),或选默认的;如果提示缺少什么软件,则根据提示安装就行。
二,启动
安装完之后,进入到安装目录执行
cd /usr/local/xunsearch
执行
bin/xs-ctl.sh restart
强烈建议您将此命令添加到开机启动脚本中,以便每次服务器重启后能自动启动搜索服务程序, 在 Linux 系统中您可以将脚本指令写进 /etc/rc.local 即可。
三,检测php-sdk运行条件,查看是否支持。
/usr/local/xunsearch/sdk/php/util/RequiredCheck.php
四,将mysql内容导入到迅搜索引库
在/usr/local/xunsearch/sdk/php/app目录下有个demo.ini,也可以自己新建或重命名。这就是一个索引库,打开后如图
里面的id,title,intro就是要导入的数据库里某个表的字段,每个字段下面的type表示迅搜里的字段类型,有以下几种:
根据实际情况选择。 假设现在有个商品表goods,在使用迅搜搜索商品时,需要先把goods表要搜索的字段导入到demo.ini中
/usr/local/xunsearch/sdk/php/util/Indexer.php --rebuild --source=mysql://root:password@localhost/dbname --sql="SELECT id,title,intro FROM goods" --project=demo
五,编写php代码进行测试
require_once '/usr/local/xunsearch/sdk/php/lib/XS.php';
$xs = new \XS('demo'); // 自动使用 /usr/local/xunsearch/sdk/php/app/demo.ini 作项目配置文件
$docs = $xs->search->search('山地车'); //搜索山地车
//获取搜索结果
$result=array();
foreach ($docs as $doc)
{
$arr=array();
$arr['id']=$doc->id;
$arr['title']=$xs->search->highlight($doc->title);
$arr['intro']=$doc->intro;
$result[]=$arr;
}
print_r($result);
上面就是最简单的单表搜索,但既然是全文索引,那就是可以搜索多个表,至于多个表怎么使用,有人说将多个表的内容保存在一个临时表内,然后将临时表的信息导入到索引库,不过还没试过。查了下,可以使用mysql的视图来解决。详细的文档可以参考官网的 http://www.xunsearch.com/doc/...
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。