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获取文件后缀名的三个函数
Oct 15 PHP
基于preg_match_all采集后数据处理的一点心得笔记(编码转换和正则匹配)
Jan 31 PHP
国产PHP开发框架myqee新手快速入门教程
Jul 14 PHP
帝国cms目录结构分享
Jul 06 PHP
thinkPHP删除前弹出确认框的简单实现方法
May 16 PHP
php获取数据库中数据的实现方法
Jun 01 PHP
PHP获取二叉树镜像的方法
Jan 17 PHP
PHP设计模式之工厂模式定义与用法详解
Apr 03 PHP
对laravel的session获取与存取方法详解
Oct 08 PHP
解决PHPstudy Apache无法启动的问题【亲测有效】
Oct 30 PHP
php如何实现数据库的备份和恢复
Nov 30 PHP
Nginx+php配置文件及原理解析
Dec 09 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摘要生成函数(无乱码)
2012/02/04 PHP
php数组声明、遍历、数组全局变量使用小结
2013/06/05 PHP
PHP中判断变量为空的几种方法分享
2013/08/26 PHP
一漂亮的PHP图片验证码实例
2014/03/21 PHP
PHP链接MySQL的常用扩展函数
2014/10/23 PHP
thinkphp5框架API token身份验证功能示例
2019/05/21 PHP
一些javascript一些题目的解析
2010/12/25 Javascript
让复选框只能选择一项的方法
2013/10/08 Javascript
jquery引用方法时传递参数原理分析
2014/10/13 Javascript
第二次聊一聊JS require.js模块化工具的基础知识
2016/04/17 Javascript
使用jQuery制作Web页面遮罩层插件的实例教程
2016/05/26 Javascript
AngularJS定时器的使用与移除操作方法【interval与timeout】
2016/12/14 Javascript
AngularJS的脏检查深入分析
2017/04/22 Javascript
利用Vue2.x开发实现JSON树的方法
2018/01/04 Javascript
仿淘宝JSsearch搜索下拉深度用法
2018/01/15 Javascript
vue中echarts3.0自适应的方法
2018/02/26 Javascript
JavaScript 中定义函数用 var foo = function () {} 和 function foo()区别介绍
2018/03/01 Javascript
详解微信小程序调起键盘性能优化
2018/07/24 Javascript
关于vue项目中搜索节流的实现代码
2019/09/17 Javascript
Python EOL while scanning string literal问题解决方法
2020/09/18 Python
在Python操作时间和日期之asctime()方法的使用
2015/05/22 Python
python 的列表遍历删除实现代码
2020/04/12 Python
Python实现的归并排序算法示例
2017/11/21 Python
pip install urllib2不能安装的解决方法
2018/06/12 Python
Python图像处理库PIL中图像格式转换的实现
2020/02/26 Python
django中的数据库迁移的实现
2020/03/16 Python
python和js交互调用的方法
2020/06/23 Python
美国休闲服装品牌:J.Crew Factory
2017/03/04 全球购物
夏尔巴人登珠峰品牌:Sherpa Adventure Gear
2018/02/08 全球购物
日本动漫周边服饰销售网站:Atsuko
2019/12/16 全球购物
小学毕业感言50字
2014/02/16 职场文书
2014年驻村干部工作总结
2014/11/17 职场文书
导师工作推荐信
2015/03/27 职场文书
负责培养人意见
2015/06/05 职场文书
离职信范文
2015/06/23 职场文书
全家福照片寄语怎么写?
2019/04/02 职场文书