xunsearch實戰經驗總結

1、定義好配置文件(很是關鍵)php

  a):若是須要作精確搜索建議對字段設定index=self,tokenizer = full,否則xunsearch會對字段作分詞處理;ide

  b):數字區間搜索需設定 type=numerice;ui

  c):如需對字段進行模糊匹配tokenizer 可不設定,默認作scws分詞,如字段存儲的值爲「,6,7,8,」想搜索包含6或8的數據;this

  d):配置文件必須包含一個type=id的主鍵字段blog

配置文件參考手冊:http://www.xunsearch.com/doc/php/guide/ini.guide排序

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

2、搜索  addQueryString()get

  a):字段搜索  it

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

  b):IN搜索 io

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  
相關文章
相關標籤/搜索