全文搜索,迅搜(Xunsearch)使用心得

最近公司的项目需要全文搜索的功能,网上有人说用迅搜可以,特地研究了下。文档看了半天,愣是没看懂;看了两天才看出来点东西,然后跟着文档动手测试,有点理解了,总结一下 ,希望能帮助以后用到的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

《全文搜索,迅搜(Xunsearch)使用心得》

四,将mysql内容导入到迅搜索引库

在/usr/local/xunsearch/sdk/php/app目录下有个demo.ini,也可以自己新建或重命名。这就是一个索引库,打开后如图

《全文搜索,迅搜(Xunsearch)使用心得》

里面的id,title,intro就是要导入的数据库里某个表的字段,每个字段下面的type表示迅搜里的字段类型,有以下几种:

《全文搜索,迅搜(Xunsearch)使用心得》
根据实际情况选择。 假设现在有个商品表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/…

    原文作者:小小仕
    原文地址: https://segmentfault.com/a/1190000011134966
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞