php实现搜索类封装示例

 更新时间:2016年03月31日 11:45:56   作者:mickelfeng  
这篇文章主要为大家详细介绍了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程序设计有所帮助。

相关文章

  • ThinkPHP部署Workerman的成功使用示例

    ThinkPHP部署Workerman的成功使用示例

    本文介绍thinkphp中关于composer集成workerman的方法,并解决了安装过程 中遇到的错误,实现了和woerkman进行握手和通信的demo。用户可以在此基础上按自己的逻辑实现一个聊天系统或者客服系统。
    2023-06-06
  • PHP+Mysql+jQuery中国地图区域数据统计实例讲解

    PHP+Mysql+jQuery中国地图区域数据统计实例讲解

    使用过百度统计或者cnzz统计的童鞋应该知道,后台有一个地图统计,不同访问量的省份显示的颜色也不一样,今天我将带领大家开发一个这样的案例。
    2015-10-10
  • thinkphp的dump函数无输出实例代码

    thinkphp的dump函数无输出实例代码

    下面小编就为大家带来一篇thinkphp的dump函数无输出实例代码。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-11-11
  • Smarty模板变量与调节器实例详解

    Smarty模板变量与调节器实例详解

    这篇文章主要介绍了Smarty模板变量与调节器,结合实例形式详细分析了Smarty模板变量与调节器基本概念、分类、使用方法及相关操作注意事项,需要的朋友可以参考下
    2019-07-07
  • Thinkphp搭建包括JS多语言的多语言项目实现方法

    Thinkphp搭建包括JS多语言的多语言项目实现方法

    这篇文章主要介绍了Thinkphp搭建包括JS多语言的多语言项目实现方法,可实现通过针对js语言包的调用达到构建多语言站点的效果,是非常实用的技巧,需要的朋友可以参考下
    2014-11-11
  • PHP数组和explode函数示例总结

    PHP数组和explode函数示例总结

    有关php分割字符串explode函数的用法,使用explode函数将字符串分割到数组,这里给大家总结了几个示例,需要的朋友参考下。
    2015-05-05
  • PHP常用文件操作函数和简单实例分析

    PHP常用文件操作函数和简单实例分析

    下面小编就为大家带来一篇PHP常用文件操作函数和简单实例分析。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-06-06
  • php简单中奖算法(实例)

    php简单中奖算法(实例)

    下面小编就为大家带来一篇php简单中奖算法(实例)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • PHP防止刷新重复提交页面的示例代码

    PHP防止刷新重复提交页面的示例代码

    我们可以利用 PHP 的 Session 来避免这一点,Session 保存在服务器端,在 PHP 过程中改变 Session 变量的值后,即保存在服务器端,下次访问这个变量时,得到是新赋的值,所以,可以用一个 Session 变量记录表单提交的次数,大于1时,就不再处理表单中的数据
    2015-11-11
  • laravel框架中表单请求类型和CSRF防护实例分析

    laravel框架中表单请求类型和CSRF防护实例分析

    这篇文章主要介绍了laravel框架中表单请求类型和CSRF防护,结合实例形式分析了laravel框架常见请求方法、提交请求以及csrf令牌的验证相关操作技巧,需要的朋友可以参考下
    2019-11-11

最新评论