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 和 MySQL 基础教程(一)
Oct 09 PHP
基于mysql的论坛(1)
Oct 09 PHP
发布一个迷你php+AJAX聊天程序[聊天室]提供下载
Jul 21 PHP
php google或baidu分页代码
Nov 26 PHP
php教程之魔术方法的使用示例(php魔术函数)
Feb 12 PHP
php调用shell的方法
Nov 05 PHP
android上传图片到PHP的过程详解
Aug 03 PHP
ThinkPHP在Cli模式下使用模板引擎的方法
Sep 25 PHP
php根据年月获取当月天数及日期数组的方法
Nov 30 PHP
浅谈ThinkPHP中initialize和construct的区别
Apr 01 PHP
Laravel使用原生sql语句并调用的方法
Oct 09 PHP
Thinkphp 框架扩展之驱动扩展实例分析
Apr 27 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
PhpMyAdmin中无法导入sql文件的解决办法
2010/01/08 PHP
PHP+SQL 注入攻击的技术实现以及预防办法
2011/01/27 PHP
php数据结构 算法(PHP描述) 简单选择排序 simple selection sort
2011/08/09 PHP
php中文验证码实现示例分享
2014/01/12 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十)
2014/06/24 PHP
PHP字符串比较函数strcmp()和strcasecmp()使用总结
2014/11/19 PHP
Javascript 判断 object 的特定类转载
2007/02/01 Javascript
3Z版基于jquery的图片复选框(asp.net+jquery)
2010/04/12 Javascript
JavaScript 面向对象之命名空间
2010/05/04 Javascript
jQuery层次选择器选择元素使用介绍
2013/04/18 Javascript
js使用eval解析json实例与注意事项分享
2014/01/18 Javascript
JavaScript数据类型检测代码分享
2015/01/26 Javascript
js使用post 方式打开新窗口
2015/02/26 Javascript
JavaScript实现强制重定向至HTTPS页面
2015/06/10 Javascript
jQuery获取同级元素的简单代码
2016/07/09 Javascript
Javascript基于jQuery UI实现选中区域拖拽效果
2016/11/25 Javascript
学习vue.js中class与style绑定
2016/12/03 Javascript
js实现图片上传预览原理分析
2017/07/13 Javascript
JavaScript捕捉事件和阻止冒泡事件实例分析
2018/08/03 Javascript
浅谈vue方法内的方法使用this的问题
2018/09/15 Javascript
在Vue项目中引入JQuery-ui插件的讲解
2019/01/27 jQuery
js+for循环实现字符串自动转义的代码(把后面的字符替换前面的字符)
2020/12/24 Javascript
详解Python中的__new__()方法的使用
2015/04/09 Python
python挖矿算力测试程序详解
2019/07/03 Python
Python 中的 global 标识对变量作用域的影响
2019/08/12 Python
Python基于Tkinter编写crc校验工具
2020/05/06 Python
css3 自定义字体font-face使用介绍
2014/05/14 HTML / CSS
英国领先的独立时装店:Van Mildert
2019/10/28 全球购物
The Outnet亚太地区:折扣设计师时装店
2019/12/05 全球购物
在校生钳工实习自我鉴定
2013/09/19 职场文书
工程造价专业大学生自荐信
2013/10/01 职场文书
《千年梦圆在今朝》教学反思
2014/02/24 职场文书
群众路线教育实践活动个人对照检查材料
2014/09/22 职场文书
八年级上册语文教学计划
2015/01/22 职场文书
2015年中职班主任工作总结
2015/05/25 职场文书
Oracle 区块链表创建过程详解
2021/05/15 Oracle