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脚本的10个技巧(5)
Oct 09 PHP
PHP 已经成熟
Dec 04 PHP
php 更新数据库中断的解决方法
Jun 05 PHP
PHP clearstatcache()函数详解
Mar 02 PHP
PHP SEO优化之URL优化方法
Apr 21 PHP
关于二级目录拖拽排序的实现(源码示例下载)
Apr 26 PHP
php统计文章排行示例
Mar 04 PHP
php使用wordwrap格式化文本段落的方法
Mar 17 PHP
thinkPHP下的widget扩展用法实例分析
Dec 26 PHP
php连接oracle数据库的方法(测试成功)
May 26 PHP
yii通过小物件生成view的方法
Oct 08 PHP
php实现将HTML页面转换成word并且保存的方法
Oct 14 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&amp;MYSQL分页原理及实现
2007/01/02 PHP
在WordPress中使用wp_count_posts函数来统计文章数量
2016/01/05 PHP
PHP错误处理函数register_shutdown_function使用示例
2017/07/03 PHP
JavaScript prototype对象的属性说明
2010/03/13 Javascript
javscript对象原型的一些看法
2010/09/19 Javascript
AngularJS语法详解
2015/01/23 Javascript
JavaScript计算两个日期时间段内日期的方法
2015/03/16 Javascript
基于JavaScript实现瀑布流布局(二)
2016/01/26 Javascript
jQuery取消特定的click事件
2016/02/29 Javascript
javascript类型系统——undefined和null全面了解
2016/07/13 Javascript
KnockoutJS 3.X API 第四章之事件event绑定
2016/10/10 Javascript
jQuery实现select模糊查询(反射机制)
2017/01/14 Javascript
走进AngularJs之过滤器(filter)详解
2017/02/17 Javascript
Vue路由跳转问题记录详解
2017/06/15 Javascript
深入理解angular2启动项目步骤
2017/07/15 Javascript
JS 正则表达式验证密码、邮箱格式的实例代码
2018/10/28 Javascript
快速解决element的autofocus失效问题
2020/09/08 Javascript
如何实现vue的tree组件
2020/12/03 Vue.js
原生JS实现pc端轮播图效果
2020/12/21 Javascript
Python中的anydbm模版和shelve模版使用指南
2015/07/09 Python
机器学习经典算法-logistic回归代码详解
2017/12/22 Python
Java实现的执行python脚本工具类示例【使用jython.jar】
2018/03/29 Python
Python爬虫包BeautifulSoup学习实例(五)
2018/06/17 Python
Python3爬虫全国地址信息
2019/01/05 Python
django 做 migrate 时 表已存在的处理方法
2019/08/31 Python
django使用F方法更新一个对象多个对象字段的实现
2020/03/28 Python
常用的10个Python实用小技巧
2020/08/10 Python
工作个人的自我评价
2014/01/14 职场文书
国家励志奖学金个人先进事迹材料
2014/05/04 职场文书
计算机毕业生自荐信
2014/06/12 职场文书
标准大学生职业生涯规划书写作指南
2014/09/18 职场文书
标准单位租车协议书
2014/09/23 职场文书
2015年初中生自我评价范文
2015/03/03 职场文书
离开雷锋的日子观后感
2015/06/09 职场文书
Nginx使用X-Accel-Redirect实现静态文件下载的统计、鉴权、防盗链、限速等
2021/04/04 Servers
PHP对接阿里云虚拟号的实现(号码隐私保护)
2021/04/06 PHP