www.adminn.cn
站长正能量分享网!

php实现搜索类封装示例

AD:阿里云服务器企业会员更优惠 腾讯云香港,韩国免备案服务器1.8折优惠

这篇文章主要为大家详细介绍了php实现搜索类封装示例,感兴趣的小伙伴们可以参考一下,本文为大家分享了php实现搜索类封装示例,供大家参考,具体内容如下:

  1. <?php 
  2. /** 
  3.  * SoClass.php 
  4.  * 索引与搜索类 */ 
  5.    
  6. class SoClass { 
  7.    
  8.   private $_xindex
  9.    
  10.   private $_xsearch
  11.    
  12.   private $_project
  13.    
  14.   public function __construct($project){ 
  15.    
  16.     //载入引导文件 
  17.     require_once 'lib/XS.php'
  18.     //初始化 
  19.     $xs = new XS($project);  
  20.     $this->_project = $project
  21.     $this->_xindex = $xs->index;  
  22.     $this->_xsearch = $xs->search; 
  23.     $this->_xsearch->setCharset('UTF-8'); 
  24.   } 
  25.    
  26.   public function query($keyWord,$row=20,$jnum=0){ 
  27.    
  28.     $xs = new XS($this->_project); 
  29.     $xs->search->setFuzzy(); 
  30.     $xs->search->setAutoSynonyms(); 
  31.     $xs->search->setQuery($keyWord); //支持同义词搜索,默认打开 
  32.     $xs->search->setLimit($row$jnum); //设置返回结果最多为 5 条,并跳过前 10 条 
  33.     $docs = $xs->search->search(); //执行搜索,将搜索结果文档保存在 $docs 数组中     
  34.     $count = $xs->search->count(); //获取搜索结果的匹配总数估算值 
  35.     if($count){ 
  36.       $data = array(); 
  37.       foreach ($docs as $key=>$doc){ 
  38.         $data[$key]['pid'] = $doc->pid; 
  39.         $data[$key]['nid'] = $doc->nid; 
  40.         $data[$key]['category'] = $doc->category; 
  41.         $data[$key]['url'] = $doc->url; 
  42.         $data[$key]['name'] = $xs->search->highlight(htmlspecialchars($doc->name)); 
  43.         $data[$key]['message'] = $xs->search->highlight(htmlspecialchars($doc->message)); 
  44.       } 
  45.    
  46.       return array('data'=>$data,'count'=>$count); 
  47.     } 
  48.     return array(); 
  49.   } 
  50.    
  51.   public function hotWord($num,$type='lastnum'){ 
  52.    
  53.     return $this->_xsearch->getHotQuery($num,$type); 
  54.   } 
  55.    
  56.   public function expanded($keyWord){ 
  57.    
  58.     return $this->_xsearch->getExpandedQuery($keyWord); 
  59.   } 
  60.    
  61.   public function lastCount(){ 
  62.    
  63.     return $this->_xsearch->getLastCount(); 
  64.   } 
  65.    
  66.   public function index($data,$update=0){ 
  67.    
  68.     // 创建文档对象 
  69.     $doc = new XSDocument; 
  70.     $doc->setFields($data); 
  71.    
  72.     // 添加或更新到索引数据库中 
  73.     if(!$update){ 
  74.       $this->_xindex->add($doc); 
  75.     }else
  76.       $this->_xindex->update($doc); 
  77.     } 
  78.   } 
  79.    
  80.   public function delete($idArray){ 
  81.    
  82.     //删除索引(主键删除array('1','2','3')) 
  83.     $this->_xindex->del($idArray);  
  84.   } 
  85.    
  86.   public function addSynonym($word1,$word2){ 
  87.    
  88.     $this->_xindex->addSynonym($word1,$word2); 
  89.   } 
  90.    
  91.   public function clearIndex(){ 
  92.    
  93.     $this->_xindex->clean(); 
  94.   } 
  95.    
  96.    
  97. ?> 

以上就是本文的全部内容,希望对大家学习php程序设计有所帮助。

模板优惠价: (点击购买)
版权声明:本文采用知识共享 署名4.0国际许可协议 [BY-NC-SA] 进行授权
文章名称:《php实现搜索类封装示例》
文章链接:https://www.adminn.cn/news/34598.html
本站资源模板仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。2021.5月起,网站调整,暂不再分享免费模板。谢谢理解

Adminn.Cn 站长分享圈

帝国CMS精品模板腾讯云优惠券,代金券

本站源码仅供本地环境下学习借鉴研究使用!

源码请勿用于任何涉灰站点!净化网络,站长更有责!

支付宝扫一扫打赏