zoukankan      html  css  js  c++  java
  • xunsearch实战经验总结

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

      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
      
  • 相关阅读:
    随手练——几个递归小题目
    随手练——USACO 1.44 母亲的牛奶
    随手练——汉诺塔问题(递归典型)
    Linux搭建lamp(Apache+PHP+Mysql环境)centos7.2版详细教程
    Windows 环境下安装redis 及其PHP Redis扩展
    Windows系统如何安装Redis
    phpstorm配置成sublime的代码高亮逼格风格
    phpstorm-----实现实时编辑服务器代码
    如何在Webstorm/Phpstorm中设置连接FTP,并快速进行文件比较,上传下载,同步等操作
    phpstorm取消自动保存,修改快捷键并标识修改的文件为星星标记
  • 原文地址:https://www.cnblogs.com/mawenzhu/p/8809484.html
Copyright © 2011-2022 走看看