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 download.php实现代码 跳转到下载文件(response.redirect)
Aug 26 PHP
php中将网址转换为超链接的函数
Sep 02 PHP
php5.3 goto函数介绍和示例
Mar 21 PHP
php实现CSV文件导入和导出
Oct 24 PHP
PHP查询并删除数据库多列重复数据的方法(利用数组函数实现)
Feb 23 PHP
PHP Try-catch 语句使用技巧
Feb 28 PHP
Yii2框架实现注册和登录教程
Sep 30 PHP
Yii2中多表关联查询hasOne hasMany的方法
Feb 15 PHP
PHP中命名空间的使用例子
Mar 22 PHP
PHP生成短网址的思路以及实现方法的详解
Mar 25 PHP
yii框架数据库关联查询操作示例
Oct 14 PHP
Laravel实现ORM带条件搜索分页
Oct 24 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中在数据库中保存Checkbox数据(1)
2006/10/09 PHP
Ajax+PHP 边学边练之四 表单
2009/11/27 PHP
php入门学习知识点八 PHP中for循环基本应用之九九乘法口绝表
2011/07/14 PHP
浅谈PHP错误类型及屏蔽方法
2017/05/27 PHP
PHP实现QQ、微信和支付宝三合一收款码实例代码
2018/02/19 PHP
javascript面向对象编程(一) 实例代码
2010/06/25 Javascript
页面回到顶部的三种实现(锚标记,js)
2012/10/01 Javascript
浅谈关于JavaScript的语言特性分析
2013/04/11 Javascript
面向对象设计模式的核心法则
2013/11/10 Javascript
Javascript中常见的校验如域名、手机、邮箱等等
2014/01/02 Javascript
JS,Jquery获取select,dropdownlist,checkbox下拉列表框的值(示例代码)
2014/01/11 Javascript
jquery处理json对象
2014/11/03 Javascript
js设置document.domain实现跨域的注意点分析
2015/05/21 Javascript
JavaScript函数柯里化详解
2016/04/29 Javascript
Javascript vue.js表格分页,ajax异步加载数据
2016/10/24 Javascript
微信小程序 数据封装,参数传值等经验分享
2017/01/09 Javascript
原生JS轮播图插件
2017/02/09 Javascript
vue.js如何更改默认端口号8080为指定端口的方法
2017/07/14 Javascript
vue v-model实现自定义样式多选与单选功能
2018/07/05 Javascript
浅析JS中什么是自定义react数据验证组件
2018/10/19 Javascript
微信小程序开发技巧汇总
2019/07/15 Javascript
[01:03]DOTA2新的征程 你的脚印值得踏上
2014/08/13 DOTA
[42:00]完美世界DOTA2联赛PWL S3 Phoenix vs INK ICE 第一场 12.13
2020/12/17 DOTA
跟老齐学Python之类的细节
2014/10/13 Python
python对html代码进行escape编码的方法
2015/05/04 Python
Python设计模式编程中Adapter适配器模式的使用实例
2016/03/02 Python
python+opencv+caffe+摄像头做目标检测的实例代码
2018/08/03 Python
python爬取王者荣耀全皮肤的简单实现代码
2020/01/31 Python
Python Opencv实现单目标检测的示例代码
2020/09/08 Python
巴西补充剂和维生素购物网站:Natue
2019/06/17 全球购物
JS原生实现轮播图的几种方法
2021/03/23 Javascript
战略合作协议书范本
2014/04/18 职场文书
学生自我评语大全
2014/04/18 职场文书
给老婆道歉的话
2015/01/20 职场文书
2015年民主评议党员工作总结
2015/05/19 职场文书
CSS3 制作精美的定价表
2021/04/06 HTML / CSS