php实现搜索类封装示例

5年以前  |  阅读数:885 次  |  编程语言:PHP 

本文为大家分享了php实现搜索类封装示例,供大家参考,具体内容如下


    <?php
    /**
     * SoClass.php
     * 索引与搜索类 */

    class SoClass {

      private $_xindex;

      private $_xsearch;

      private $_project;

      public function __construct($project){

        //载入引导文件
        require_once 'lib/XS.php';
        //初始化
        $xs = new XS($project); 
        $this->_project = $project;
        $this->_xindex = $xs->index; 
        $this->_xsearch = $xs->search;
        $this->_xsearch->setCharset('UTF-8');
      }

      public function query($keyWord,$row=20,$jnum=0){

        $xs = new XS($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 ($docs as $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));
          }

          return array('data'=>$data,'count'=>$count);
        }
        return array();
      }

      public function hotWord($num,$type='lastnum'){

        return $this->_xsearch->getHotQuery($num,$type);
      }

      public function expanded($keyWord){

        return $this->_xsearch->getExpandedQuery($keyWord);
      }

      public function lastCount(){

        return $this->_xsearch->getLastCount();
      }

      public function index($data,$update=0){

        // 创建文档对象
        $doc = new XSDocument;
        $doc->setFields($data);

        // 添加或更新到索引数据库中
        if(!$update){
          $this->_xindex->add($doc);
        }else{
          $this->_xindex->update($doc);
        }
      }

      public function delete($idArray){

        //删除索引(主键删除array('1','2','3'))
        $this->_xindex->del($idArray); 
      }

      public function addSynonym($word1,$word2){

        $this->_xindex->addSynonym($word1,$word2);
      }

      public function clearIndex(){

        $this->_xindex->clean();
      }

    }

    ?>

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

 相关文章:
PHP分页显示制作详细讲解
SSH 登录失败:Host key verification failed
获取IMSI
将二进制数据转为16进制以便显示
获取IMEI
文件下载
贪吃蛇
双位运算符
PHP自定义函数获取搜索引擎来源关键字的方法
Java生成UUID
发送邮件
年的日历图
提取后缀名
在Zeus Web Server中安装PHP语言支持
让你成为最历害的git提交人
Yii2汉字转拼音类的实例代码
再谈PHP中单双引号的区别详解
指定应用ID以获取对应的应用名称
Python 2与Python 3版本和编码的对比
php封装的page分页类完整实例