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 相关文章推荐
最小化数据传输――在客户端存储数据
Oct 09 PHP
PHP 采集程序 常用函数
Dec 18 PHP
php pack与unpack 摸板字符字符含义
Oct 29 PHP
解析PHP中常见的mongodb查询操作
Jun 20 PHP
PHP生成和获取XML格式数据的方法
Mar 04 PHP
值得分享的php+ajax实时聊天室
Jul 20 PHP
php版微信js-sdk支付接口类用法示例
Oct 12 PHP
基于php实现的验证码小程序
Dec 13 PHP
PHP压缩图片功能的介绍
Mar 21 PHP
详解如何实现Laravel的服务容器的方法示例
Apr 15 PHP
基于Laravel 5.2 regex验证的正确写法
Sep 29 PHP
Laravel5.3+框架定义API路径取消CSRF保护方法详解
Apr 06 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
图书管理程序(三)
2006/10/09 PHP
php实现过滤UBB代码的类
2015/03/12 PHP
yii框架结合charjs实现统计30天数据的方法
2020/04/04 PHP
Nigma vs Alliance BO5 第四场2.14
2021/03/10 DOTA
js 模拟实现类似c#下的hashtable的简单功能代码
2010/01/24 Javascript
Javascript执行效率全面总结
2013/11/04 Javascript
jquery 取子节点及当前节点属性值
2014/07/25 Javascript
JS制作手机端自适应缩放显示
2015/06/11 Javascript
jQuery模拟黑客帝国矩阵效果实例
2015/06/28 Javascript
js实现键盘自动打字效果
2016/12/23 Javascript
JavaScript实现省市县三级级联特效
2017/05/16 Javascript
基于JS对象创建常用方式及原理分析
2017/06/28 Javascript
Vue打包后出现一些map文件的解决方法
2018/02/13 Javascript
vue2.0 循环遍历加载不同图片的方法
2018/03/06 Javascript
js图片查看器插件用法示例
2019/06/22 Javascript
微信小程序实现列表的横向滑动方式
2020/07/15 Javascript
原生JavaScript实现进度条
2021/02/19 Javascript
[01:02:48]2018DOTA2亚洲邀请赛 4.1 小组赛 A组 LGD vs OG
2018/04/02 DOTA
Python lambda和Python def区别分析
2014/11/30 Python
python制作最美应用的爬虫
2015/10/28 Python
Python内置函数 next的具体使用方法
2017/11/24 Python
python使用xlrd和xlwt读写Excel文件的实例代码
2018/09/05 Python
Python3中关于cookie的创建与保存
2018/10/21 Python
Python 实现中值滤波、均值滤波的方法
2019/01/09 Python
PySide和PyQt加载ui文件的两种方法
2019/02/27 Python
使用pycharm在本地开发并实时同步到服务器
2019/08/02 Python
Links of London官方网站:英国标志性的珠宝品牌
2017/04/09 全球购物
英国赛车、汽车改装和摩托车零件购物网站:Demon Tweeks
2018/10/29 全球购物
工商管理系学生的自我评价分享
2013/11/29 职场文书
加工操作管理制度
2014/01/19 职场文书
银行服务明星推荐材料
2014/05/29 职场文书
退学证明范本3篇
2014/10/29 职场文书
学生会生活部工作总结2015
2015/03/31 职场文书
2015年公司保安年终工作总结
2015/05/14 职场文书
《自然之道》读后感3篇
2019/12/17 职场文书
Python连续赋值需要注意的一些问题
2021/06/03 Python