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()
$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
工具类,可以参考
如下这样使用即可:
$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