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 图片上传类代码
Jul 17 PHP
php 从数据库提取二进制图片的处理代码
Sep 09 PHP
PHP Warning: PHP Startup: Unable to load dynamic library \ D:/php5/ext/php_mysqli.dll\
Jun 17 PHP
PHP实现抓取Google IP并自动修改hosts文件
Feb 12 PHP
PHP实现从远程下载文件的方法
Mar 12 PHP
PHP aes (ecb)解密后乱码问题
Jun 22 PHP
浅析PHP关键词替换的类(避免重复替换,保留与还原原始链接)
Sep 22 PHP
[原创]php使用strpos判断字符串中数字类型子字符串出错的解决方法
Apr 01 PHP
PHP结合Vue实现滚动底部加载效果
Dec 17 PHP
Laravel模型事件的实现原理详解
Mar 14 PHP
yii2安装详细流程
May 23 PHP
laravel 解决groupBy时出现的错误 isn't in Group By问题
Oct 17 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执行速率优化技巧小结
2008/03/15 PHP
php strstr查找字符串中是否包含某些字符的查找函数
2010/06/03 PHP
在PHP中设置、使用、删除Cookie的解决方法
2013/05/06 PHP
PHP编写RESTful接口
2016/02/23 PHP
基于PHP实现通过照片获取ip地址
2016/04/26 PHP
微信公众号实现会员卡领取功能
2017/06/08 PHP
关于PHP中协程和阻塞的一些理解与思考
2017/08/11 PHP
validator验证控件使用代码
2010/11/23 Javascript
写得不错的jquery table鼠标经过变色代码
2013/09/27 Javascript
浅析JavaScript中的同名标识符优先级
2013/12/06 Javascript
javascript中处理时间戳为日期格式的方法
2014/01/02 Javascript
jQuery动态效果显示人物结构关系图的方法
2015/05/07 Javascript
js实现跨域的4种实用方法原理分析
2015/10/29 Javascript
Jquery插件之Fancybox丰富的弹出层效果附源码下载
2015/12/02 Javascript
js导出excel文件的简洁方法(推荐)
2016/11/02 Javascript
用JavaScript实现让浏览器停止载入页面的方法
2017/01/19 Javascript
vue组件父子间通信详解(三)
2017/11/07 Javascript
JS实现的RC4加密算法示例
2018/08/16 Javascript
vue watch深度监听对象实现数据联动效果
2018/08/16 Javascript
vue如何截取字符串
2019/05/06 Javascript
解决微信小程序中的滚动穿透问题
2019/09/16 Javascript
vue element-ui读取pdf文件的方法
2019/11/26 Javascript
浅谈Vue3 Composition API如何替换Vue Mixins
2020/04/29 Javascript
[01:01:18]VP vs NIP 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
python调用新浪微博API项目实践
2014/07/28 Python
Java Web开发过程中登陆模块的验证码的实现方式总结
2016/05/25 Python
python实现机器人行走效果
2018/01/29 Python
python爬虫框架scrapy实现模拟登录操作示例
2018/08/02 Python
python web自制框架之接受url传递过来的参数实例
2018/12/17 Python
机械专业应届生求职信
2013/09/21 职场文书
中医专业应届生求职信
2013/11/17 职场文书
会计专业求职信范文
2014/03/16 职场文书
学习雷锋倡议书
2014/04/15 职场文书
纪检部部长竞选稿
2015/11/21 职场文书
2016年大学生暑期社会实践方案
2015/11/26 职场文书
Python爬虫入门案例之爬取去哪儿旅游景点攻略以及可视化分析
2021/10/16 Python