查看: 1685|回复: 0

[PHP学习] 全文搜索,迅搜(Xunsearch)使用心得

发表于 2017-9-21 08:00:05
句号论坛

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

一,安装
  1. wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2
  2. tar -xjf xunsearch-full-latest.tar.bz2
  3. cd xunsearch-full-1.3.0/
  4. sh setup.sh
复制代码

安装过程中会提示输入安装目录(如:/usr/local/xunsearch),或选默认的;如果提示缺少什么软件,则根据提示安装就行。

二,启动

安装完之后,进入到安装目录执行

  1. cd /usr/local/xunsearch
复制代码

执行

  1. bin/xs-ctl.sh restart
复制代码

强烈建议您将此命令添加到开机启动脚本中,以便每次服务器重启后能自动启动搜索服务程序, 在 Linux 系统中您可以将脚本指令写进 /etc/rc.local 即可。

三,检测php-sdk运行条件,查看是否支持。
  1. /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中

  1. /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代码进行测试
  1. require_once '/usr/local/xunsearch/sdk/php/lib/XS.php';
  2. $xs = new \XS('demo'); // 自动使用 /usr/local/xunsearch/sdk/php/app/demo.ini 作项目配置文件
  3. $docs = $xs->search->search('山地车'); //搜索山地车
  4. //获取搜索结果
  5. $result=array();
  6. foreach ($docs as $doc)
  7. {
  8. $arr=array();
  9. $arr['id']=$doc->id;
  10. $arr['title']=$xs->search->highlight($doc->title);
  11. $arr['intro']=$doc->intro;
  12. $result[]=$arr;
  13. }
  14. print_r($result);
复制代码

上面就是最简单的单表搜索,但既然是全文索引,那就是可以搜索多个表,至于多个表怎么使用,有人说将多个表的内容保存在一个临时表内,然后将临时表的信息导入到索引库,不过还没试过。查了下,可以使用mysql的视图来解决。详细的文档可以参考官网的 http://www.xunsearch.com/doc/...



太阳http代理AD
回复

使用道具 举报

关闭

站长推荐上一条 /1 下一条