php实现搜索类封装示例
本文为大家分享了php实现搜索类封装示例,供大家参考,具体内容如下
<?php /** *SoClass.php *索引与搜索类*/ classSoClass{ private$_xindex; private$_xsearch; private$_project; publicfunction__construct($project){ //载入引导文件 require_once'lib/XS.php'; //初始化 $xs=newXS($project); $this->_project=$project; $this->_xindex=$xs->index; $this->_xsearch=$xs->search; $this->_xsearch->setCharset('UTF-8'); } publicfunctionquery($keyWord,$row=20,$jnum=0){ $xs=newXS($this->_project); $xs->search->setFuzzy(); $xs->search->setAutoSynonyms(); $xs->search->setQuery($keyWord);//支持同义词搜索,默认打开 $xs->search->setLimit($row,$jnum);//设置返回结果最多为5条,并跳过前10条 $docs=$xs->search->search();//执行搜索,将搜索结果文档保存在$docs数组中 $count=$xs->search->count();//获取搜索结果的匹配总数估算值 if($count){ $data=array(); foreach($docsas$key=>$doc){ $data[$key]['pid']=$doc->pid; $data[$key]['nid']=$doc->nid; $data[$key]['category']=$doc->category; $data[$key]['url']=$doc->url; $data[$key]['name']=$xs->search->highlight(htmlspecialchars($doc->name)); $data[$key]['message']=$xs->search->highlight(htmlspecialchars($doc->message)); } returnarray('data'=>$data,'count'=>$count); } returnarray(); } publicfunctionhotWord($num,$type='lastnum'){ return$this->_xsearch->getHotQuery($num,$type); } publicfunctionexpanded($keyWord){ return$this->_xsearch->getExpandedQuery($keyWord); } publicfunctionlastCount(){ return$this->_xsearch->getLastCount(); } publicfunctionindex($data,$update=0){ //创建文档对象 $doc=newXSDocument; $doc->setFields($data); //添加或更新到索引数据库中 if(!$update){ $this->_xindex->add($doc); }else{ $this->_xindex->update($doc); } } publicfunctiondelete($idArray){ //删除索引(主键删除array('1','2','3')) $this->_xindex->del($idArray); } publicfunctionaddSynonym($word1,$word2){ $this->_xindex->addSynonym($word1,$word2); } publicfunctionclearIndex(){ $this->_xindex->clean(); } } ?>
以上就是本文的全部内容,希望对大家学习php程序设计有所帮助。