php实现搜索类封装示例


Posted in PHP onMarch 31, 2016

本文为大家分享了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 相关文章推荐
PHP中10个不常见却非常有用的函数
Mar 21 PHP
PHP校验ISBN码的函数代码
Jan 17 PHP
php中获取远程客户端的真实ip地址的方法
Aug 03 PHP
ThinkPHP3.0略缩图不能保存到子目录的解决方法
Sep 30 PHP
基于PHP读取TXT文件向数据库导入海量数据的方法
Apr 23 PHP
PHP cdata 处理(详细介绍)
Jul 05 PHP
PHP保留两位小数并且四舍五入及不四舍五入的方法
Sep 22 PHP
Smarty中的注释和截断功能介绍
Apr 09 PHP
将PHP从5.3.28升级到5.3.29时Nginx出现502错误
May 09 PHP
php 伪造HTTP_REFERER页面URL来源的三种方法
Sep 22 PHP
PHP PDOStatement::fetchObject讲解
Feb 01 PHP
php生成HTML文件的类方法
Oct 11 PHP
PHP-FPM实现性能优化
Mar 31 #PHP
PHP实现通过URL提取根域名
Mar 31 #PHP
PHP的PDO操作简单示例
Mar 30 #PHP
PHP Smarty模版简单使用方法
Mar 30 #PHP
PHP格式化MYSQL返回float类型的方法
Mar 30 #PHP
PHP获取网页所有连接的方法(附demo源码下载)
Mar 30 #PHP
PHP记录页面停留时间的方法
Mar 30 #PHP
You might like
PHP 设置MySQL连接字符集的方法
2011/01/02 PHP
wamp下修改mysql访问密码的解决方法
2013/05/07 PHP
PHP中Static(静态)关键字功能与用法实例分析
2019/04/05 PHP
tp5框架使用cookie加密算法实现登录功能示例
2020/02/10 PHP
jquery动态增加text元素以及删除文本内容实例代码
2013/07/01 Javascript
JS代码同步文本框内容的实例方法
2013/07/12 Javascript
jquery 删除cookie失效的解决方法
2013/11/12 Javascript
JS+CSS 制作的超级简单的下拉菜单附图
2013/11/22 Javascript
深入分析JQuery和JavaScript的异同
2014/10/23 Javascript
jquery实现焦点图片随机切换效果的方法
2015/03/12 Javascript
jquery实现在网页指定区域显示自定义右键菜单效果
2015/08/25 Javascript
jquery如何获取元素的滚动条高度等实现代码
2015/10/19 Javascript
微信小程序组件之srcoll-view的详解
2017/10/19 Javascript
vue.js整合vux中的上拉加载下拉刷新实例教程
2018/01/09 Javascript
Vue使用vue-area-linkage实现地址三级联动效果的示例
2018/06/27 Javascript
深入学习JavaScript 高阶函数
2019/06/11 Javascript
vue.js中ref及$refs的使用方法解析
2019/10/08 Javascript
vue实现购物车加减
2020/05/30 Javascript
Python中的变量和作用域详解
2016/07/13 Python
浅谈python中np.array的shape( ,)与( ,1)的区别
2018/06/04 Python
Python将多个list合并为1个list的方法
2018/06/27 Python
python hook监听事件详解
2018/10/25 Python
对python制作自己的数据集实例讲解
2018/12/12 Python
django数据关系一对多、多对多模型、自关联的建立
2019/07/24 Python
HTML5 File API改善网页上传功能
2009/08/19 HTML / CSS
html5使用canvas画空心圆与实心圆
2014/12/15 HTML / CSS
boostrap modal 闪现问题的解决方法
2020/09/01 HTML / CSS
当文件系统受到破坏时,如何检查和修复系统?
2012/03/09 面试题
自我评价是什么
2014/01/04 职场文书
开业庆典邀请函
2014/01/08 职场文书
优秀村官事迹材料
2014/01/10 职场文书
个人求职信范文分享
2014/01/31 职场文书
2014年最新版离婚协议书范本
2014/11/25 职场文书
2019七夕节祝福语36句,快来收藏吧
2019/08/06 职场文书
Python爬虫之用Xpath获取关键标签实现自动评论盖楼抽奖(二)
2021/06/07 Python
MySQL的存储函数与存储过程的区别解析
2022/04/08 MySQL