使用xunsearch来做全文检索

3 篇文章 0 订阅
官网地址: http://www.xunsearch.com/
xunsearch是一个搜索的工具,可以加快搜索速度

一般的步骤为:
1.在服务器安装xunsearch服务,注意如果要给外部服务器访问,要在防火墙设置开放8383,8384端口
2.将根目录的sdk\php文件里面的所有内容移到你的项目中
3.在app文件夹里面新增 source.ini文件
4.导入mysql数据源到xunsearch中
5.在网页中测试:
require "./libraries/xunsearch/lib/XS.php";
$xs = new XS('source');    // demo  为项目名称,配置文件是:$sdk/app/demo.in i
$index = $xs->index;   //  获取索引对象
$search = $xs->getSearch();   //  获取搜索对象
echo $search->count()
如果拿到数据就代表成功,可以查看文档开发了
6.在linux配置定时刷新,可以自己看文档写更新语句,也可以直接使用你刚开始重建mysql数据源的命令写到crontab

几个坑:
1.source.ini文件是自己创建命名的,比如你导入的数据源里面有什么查询字段,在配置文件必须命名出来,否则xs不会读取
2.封装分页的时候获取当前搜索一共有多少条结果要这样使用: $xunSearch->count("搜索条件")不加就是查询所有

安装步骤:
wget http://www.xunsearch.com/download/xunsearch-full-latest.tar.bz2tar -xjf xunsearch-full-latest.tar.bz2
cd xunsearch-full-1.3.0/sh setup.sh
bin/xs-ctl.sh restart 启动项目
配置文件:
配置文件写在app/(项目名称).ini 上面,自己创建

project.name = source #唯一项目名称
project.default_charset = utf-8
server.index = 8383
server.search = 8384
#配置主键ID
#type指字段类型,支持: string  numeric date title id body 
#index指定索引方式
  • none 不做索引,所有的搜索匹配均与本字段无关,这个字段只用于排序或搜索结果展示用到。
  • self 字段索引,可以在搜索时用 field:XXX 来检索本字段
  • mixed 混合区索引,不标明字段的默认搜索也可以检索本字段
  • both 相当于 self + mixed,两种情况均索引
#tokenizer 指定分词方式
  • full 表示本字段的值整体作为一个检索词,像各种 ID 都适合这种情况
  • none 表示本字段没有任何词汇用于索引
  • split([ ]) 表示根据参数分割内容,默认参数为空格,若参数以 / 开头并以 / 结尾则 内部调用preg_split(arg, ..) 来分割取词,以支持正则或其它特殊字符分割
  • xlen([2]) 表示根据指定参数长度分段取词,如 ABCDEF => AB + CD + EF
  • xstep([2]) 表示根据指定参数步长逐段取词,如 ABCDEF => AB + ABCD + ABCDEF
  • scws([3]) 表示采用指定参数为复合等级的 scws 分词,(若无特殊复合需求,无需指定)
[id]
type = id
[ten]
type = string
index = self
[thumb]
type = string
[mota_vi]
type = body

工具类,可以参考
XunSearch.php
如下这样使用即可:
$keyword = trim('适用于'); //接收关键词
$xunSearch = new XunSearch();
$aa = $xunSearch->query('ten:千页轮 不锈钢');

将mysql里面的数据库添加到xunsearch服务
util/Indexer.php --rebuild --source=mysql://xunsearch:xjhnwsmstc@localhost/shop --sql="SELECT ten_vi as ten,id,thumb,mota_vi,tenkhongdau,giaban,giacu,khuvuc,thoigian,luotxem,damua,muaao,type,new,hot,hit,score FROM table_product where hienthi=1 $type and type='product' order by stt asc" --project=source(项目名称)

util/Indexer.php --source=mysql://xunsearch@localhost/shop --sql="SELECT ten_vi as ten,id,thumb,mota_vi,tenkhongdau,giaban,giacu,khuvuc,thoigian,luotxem,damua,muaao,type,new,hot,hit,score FROM table_product" --project=source
清空索引
util/Indexer.php --clean demo












评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值