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生成文件
Jan 15 PHP
php中常见的sql攻击正则表达式汇总
Nov 06 PHP
php中字符查找函数strpos、strrchr与strpbrk用法
Nov 18 PHP
Apache无法自动跳转却显示目录的解决方法
Nov 30 PHP
php 使用fopen函数创建、打开文件详解及实例代码
Sep 24 PHP
PHP页面跳转操作实例分析(header方法)
Sep 28 PHP
完美解决Thinkphp3.2中插入相同数据的问题
Aug 01 PHP
php无限级评论嵌套实现代码
Apr 18 PHP
PHP生成(支持多模板)二维码海报代码
Apr 30 PHP
PHP日志LOG类定义与用法示例
Sep 06 PHP
PHP删除字符串中非字母数字字符方法总结
Jan 20 PHP
php基于 swoole 实现的异步处理任务功能示例
Aug 13 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下HTTP Response中的Chunked编码实现方法
2008/11/19 PHP
PHP教程 预定义变量
2009/10/23 PHP
php简单smarty入门程序实例
2015/06/11 PHP
浅谈php中include文件变量作用域
2015/06/18 PHP
PHP命名空间和自动加载类
2016/04/03 PHP
微信公众号开发之获取位置信息php代码
2018/06/13 PHP
精解window.setTimeout()&amp;window.setInterval()使用方式与参数传递问题!
2007/11/23 Javascript
Extjs 继承Ext.data.Store不起作用原因分析及解决
2013/04/15 Javascript
从jquery的过滤器.filter()方法想到的
2013/09/29 Javascript
用js模拟struts2的多action调用示例
2014/05/19 Javascript
JQuery.validationEngine表单验证插件(推荐)
2016/12/10 Javascript
jquery+ajax实现省市区三级联动效果简单示例
2017/01/04 Javascript
jQuery实现checkbox即点即改批量删除及中间遇到的坑
2017/11/11 jQuery
jquery应用实例分享_实现手风琴特效
2018/02/01 jQuery
超详细小程序定位地图模块全系列开发教学
2020/11/24 Javascript
python中使用smtplib和email模块发送邮件实例
2014/04/22 Python
Python中encode()方法的使用简介
2015/05/18 Python
python定时器(Timer)用法简单实例
2015/06/04 Python
Python使用poplib模块和smtplib模块收发电子邮件的教程
2016/07/02 Python
Python内建模块struct实例详解
2018/02/02 Python
Python入门之后再看点什么好?
2018/03/05 Python
Python PyQt4实现QQ抽屉效果
2018/04/20 Python
对Python 内建函数和保留字详解
2018/10/15 Python
python爬虫超时的处理的实例
2018/12/19 Python
pyqt弹出新对话框,以及关闭对话框获取数据的实例
2019/06/18 Python
Python+Kepler.gl轻松制作酷炫路径动画的实现示例
2020/06/02 Python
html5移动端自适应布局的实现
2020/04/15 HTML / CSS
医学生自我鉴定范文
2013/11/08 职场文书
学生党员思想汇报
2013/12/28 职场文书
敬老院活动总结
2014/04/28 职场文书
国旗下的讲话演讲稿
2014/05/08 职场文书
工地安全生产标语
2014/06/06 职场文书
传播学专业毕业生自荐书
2014/07/01 职场文书
幼儿园毕业致辞
2015/07/29 职场文书
《小摄影师》教学反思
2016/02/18 职场文书
如何写好竞聘报告
2019/04/03 职场文书