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 相关文章推荐
MYSQL数据库初学者使用指南
Nov 16 PHP
在JavaScript中调用php程序
Mar 09 PHP
php和数据库结合的一个简单的web实例 代码分析 (php初学者)
Jul 28 PHP
通过php快速统计某个数据库中每张表的数据量
Sep 04 PHP
使用php 获取时间今天明天昨天时间戳的详解
Jun 20 PHP
常用PHP框架功能对照表
Oct 23 PHP
用 Composer构建自己的 PHP 框架之构建路由
Oct 30 PHP
Yii框架连接mongodb数据库的代码
Jul 27 PHP
可兼容php5与php7的cURL文件上传功能实例分析
May 11 PHP
PHP进阶学习之Geo的地图定位算法详解
Jun 19 PHP
yii框架使用分页的方法分析
Jul 25 PHP
Laravel 中使用简单的方法跟踪用户是否在线(推荐)
Oct 30 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写的一个冒泡排序法的函数简单实例
2016/05/26 PHP
将PHP的session数据存储到数据库中的代码实例
2016/06/24 PHP
PHP7新特性foreach 修改示例介绍
2016/08/26 PHP
php使用fputcsv实现大数据的导出操作详解
2020/02/27 PHP
你需要知道的JavsScript可以做什么?
2007/06/29 Javascript
JavaScript 操作键盘的Enter事件(键盘任何事件),兼容多浏览器
2010/10/11 Javascript
nodejs调用cmd命令实现复制目录
2015/05/04 NodeJs
网站申请不到支付宝接口、微信接口,免接口收款实现方式几种解决办法
2016/12/14 Javascript
jQuery插件HighCharts绘制2D柱状图、折线图和饼图的组合图效果示例【附demo源码下载】
2017/03/09 Javascript
最常用的jQuery表单验证(简单)
2017/05/23 jQuery
微信小程序多列选择器range-key使用详解
2020/03/30 Javascript
微信小程序移动拖拽视图-movable-view实例详解
2019/08/17 Javascript
React路由鉴权的实现方法
2019/09/05 Javascript
javascript 构建模块化开发过程解析
2019/09/11 Javascript
layui 富文本图片上传接口与普通按钮 文件上传接口的例子
2019/09/23 Javascript
HTML+JavaScript实现扫雷小游戏
2019/09/30 Javascript
深入理解Python爬虫代理池服务
2018/02/28 Python
Python3.x爬虫下载网页图片的实例讲解
2018/05/22 Python
django 在原有表格添加或删除字段的实例
2018/05/27 Python
Linux下多个Python版本安装教程
2018/08/15 Python
浅谈django的render函数的参数问题
2018/10/16 Python
pycharm debug功能实现跳到循环末尾的方法
2018/11/29 Python
python代理工具mitmproxy使用指南
2019/07/04 Python
django url到views参数传递的实例
2019/07/19 Python
python 多进程共享全局变量之Manager()详解
2019/08/15 Python
python opencv进行图像拼接
2020/03/27 Python
Python3-异步进程回调函数(callback())介绍
2020/05/02 Python
python向企业微信发送文字和图片消息的示例
2020/09/28 Python
世界上获奖最多的手机镜头:Olloclip
2018/03/03 全球购物
南京某软件公司的.net面试题
2015/11/30 面试题
党委书记岗位职责
2013/11/24 职场文书
计生办班子群众路线教育实践活动个人对照检查材料思想汇报
2014/10/04 职场文书
文明旅游倡议书
2015/04/28 职场文书
社区敬老月活动总结
2015/05/07 职场文书
反邪教观后感
2015/06/11 职场文书
浅谈为什么我的 z-index 又不生效了
2022/07/15 HTML / CSS