xunsearch实战经验总结

无所事事10个月前CMS插件378

一、定义好配置文件(非常关键)

  a):如果需要做精确搜索建议对字段设定index=self,tokenizer = full,不然xunsearch会对字段做分词处理;

  b):数字区间搜索需设定 type=numerice;

  c):如需对字段进行模糊匹配tokenizer 可不设定,默认做scws分词,如字段存储的值为“,6,7,8,”想搜索包含6或8的数据;

  d):配置文件必须包含一个type=id的主键字段

配置文件参考手册:http://www.xunsearch.com/doc/php/guide/ini.guide

生成配置文件:http://www.xunsearch.com/tools/iniconfig

二、搜索  addQueryString()

  a):字段搜索  

$this->_xs_search->addQueryString('style_sn'.':"'.$condition['style_sn'].'"');

b):IN搜索

foreach ($list as $value){ 
      $query.="{$key}:{$value} OR ";
   }
$this->_xs_search->addQueryString(rtrim($query,"OR "));

c):区间搜索

$this->_xs_search->addRange('shoucun',$condition['shoucun_min'],null); //大于最小值
$this->_xs_search->addRange('goods_price',$condition['price_min'],$condition['price_max']);

d):like搜索

不设定tokenizer默认支持模糊搜索

$this->_xs_search->addQueryString('style_sn'.':"'.$condition['style_sn'].'"');

e):排序

   排序字段建议采用数字类型(非必须)

$order=array("goods_click"=>1);
  if (count($order) > 1) {
    $this->_xs_search->setMultiSort($order);  //多个排序字段
  } else {
     $this->_xs_search->setSort($order);
  }

d):分组 (setCollapse)

$this->_xs_search->setCollapse($this->_collapse,1)->setLimit($page_size,$begin);

f):返回总数不正确

//解决总条数(getLastCount()/count())统计不准确问题
//原理:重新查询一次并设定Limit,如果超过实际总数将返回正确的记录条数
$this->_xs_search->setCollapse($this->_collapse,1)->search();
$count = $this->_xs_search->setCollapse($this->_collapse,1)->getLastCount();   
$total_page = ceil($count/$page_size);
$begin = ($total_page-1)*$page_size;
$this->_xs_search->setCollapse($this->_collapse,1)->setLimit($page_size,$begin);
$this->_xs_search->setCollapse($this->_collapse,1)->search();
$count = $this->_xs_search->setCollapse($this->_collapse,1)->getLastCount();
$this->_indexer_count = $count;

注意: 如果出现10061错误或连接被拒绝,请在安装目录bin文件夹下执行此句命令:./xs-ctl.sh -b inet start


原文链接:https://www.cnblogs.com/mawenzhu/p/8809484.html

相关文章

Elasticsearch之中文分词器插件es-ik的自定义词库

【 ik 自定义词库步骤】1:创建词典首先在 ik 插件的 config/custom 目录下创建一个文件 zhouls.dic (当然这个你可以自己命名,如my.dic都行)在文件中添加词语即可,...

CentOS8.0安装迅搜(XunSearch)引擎报错的解决办法

在一些小型项目上需要应用全文搜索引擎时,我比较喜欢使用迅搜,因为部署方便,调用简单,今天给客户部署系统安装迅搜时,竟然有报错(极少遇到报错的情况),花了一些时间查资料,终于解决了,分享一下经验首先是定...

elasticsearch 开机自启动——/etc/init.d

开机自启动,就是在系统启动后,自行启动elasticsearch,无需手动启动。一、查看已存在的开机启动项[root@qf01 ~]# chkconfig --list显...

ElasticSearch搜索建议与上下文提示

ElasticSearch搜索建议与上下文提示

搜索建议通过Suggester Api实现原理是将输入的文本分解为Token,然后在词典中查找类似的Term返回根据不同场景,ElasticSearch设计了4中类别的Suggesters。Term...

关于使用讯搜(xunsearch)过程中遇到的坑

1. 在xunsearch中按区间搜索的方法`$search->addRange('字段名','from','to')`- 第一个参数为字段名-...

XunSearch设置为服务 开机自动启动

开机自动启动[Uint] Description=xunsearch   [Service] Type=forking ExecStart=/bin/sh /usr/lo...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。