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