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 Google的translate API代码
Dec 10 PHP
PHP 杂谈《重构-改善既有代码的设计》之四 简化条件表达式
Apr 09 PHP
php ZipArchive压缩函数详解实例
Nov 06 PHP
php绘图中显示不出图片的原因及解决
Mar 05 PHP
PHP独立Session数据库存储操作类分享
Jun 11 PHP
一个非常完美的读写ini格式的PHP配置类分享
Feb 12 PHP
PHP邮箱验证示例教程
Jun 01 PHP
php 使用curl模拟登录人人(校内)网的简单实例
Jun 06 PHP
Yii2.0表关联查询实例分析
Jul 18 PHP
php+ajax实现异步上传文件或图片功能
Jul 18 PHP
PHP文件系统管理(实例讲解)
Sep 19 PHP
PHP排序算法之堆排序(Heap Sort)实例详解
Apr 21 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
神族 Protoss 历史背景
2020/03/14 星际争霸
怎样去阅读一份php源代码
2009/08/21 PHP
用PHP写的基于Memcache的Queue实现代码
2011/11/27 PHP
php数据库配置文件一般做法分享
2012/07/07 PHP
简要剖析PHP的Yii框架的组件化机制的基本知识
2016/03/17 PHP
PHP自定义错误处理的方法分析
2018/12/19 PHP
jquery 简单的进度条实现代码
2010/03/11 Javascript
JS实现向表格中动态添加行的方法
2015/03/30 Javascript
jQuery实现左右切换焦点图
2015/04/03 Javascript
JavaScript中数据结构与算法(五):经典KMP算法
2015/06/19 Javascript
jquery对象和DOM对象的任意相互转换
2016/02/21 Javascript
AngularJS equal比较对象实例详解
2016/09/14 Javascript
Vue-cli中为单独页面设置背景色的实现方法
2018/02/11 Javascript
对vue.js中this.$emit的深入理解
2018/02/23 Javascript
Vue使用NPM方式搭建项目
2018/10/25 Javascript
微信小程序实现省市区三级地址选择
2020/06/21 Javascript
Vue自定义全局弹窗组件操作
2020/08/11 Javascript
原生JS生成指定位数的验证码
2020/10/28 Javascript
Python对小数进行除法运算的正确方法示例
2014/08/25 Python
Python之父谈Python的未来形式
2016/07/01 Python
Python qqbot 实现qq机器人的示例代码
2019/07/11 Python
python使用Matplotlib改变坐标轴的默认位置
2019/10/18 Python
keras 读取多标签图像数据方式
2020/06/12 Python
哪些是python中web开发框架
2020/06/17 Python
python全栈开发语法总结
2020/11/22 Python
django使用多个数据库的方法实例
2021/03/04 Python
css3 background属性调整增强介绍
2010/12/18 HTML / CSS
常用的四种CSS透明属性介绍
2014/04/12 HTML / CSS
canvas烟花特效锦集
2018/01/17 HTML / CSS
康帕斯酒店预订:Compass Hospitality(支持中文)
2018/08/23 全球购物
经营管理策划方案
2014/05/22 职场文书
我的职业生涯规划:打造自己的运动帝国
2014/09/18 职场文书
2014年客户经理工作总结
2014/11/20 职场文书
干部培训工作总结2015
2015/05/25 职场文书
投诉书格式范本
2015/07/02 职场文书
2016年暑假学生家长评语
2015/12/01 职场文书