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 输出缓存详解
Jun 20 PHP
php set_magic_quotes_runtime() 函数过时解决方法
Jul 08 PHP
PHP数组的交集array_intersect(),array_intersect_assoc(),array_inter_key()函数的小问题
May 29 PHP
基于PHP的cURL快速入门教程 (小偷采集程序)
Jun 02 PHP
php删除页面记录 同时刷新页面 删除条件用GET方式获得
Jan 10 PHP
深入php数据采集的详解
Jun 02 PHP
PHP类的反射用法实例
Nov 03 PHP
PHP中的类型提示(type hinting)功能介绍
Jul 01 PHP
php采集神器cURL使用方法详解
Feb 19 PHP
PHP中FTP相关函数小结
Jul 15 PHP
详解Yii2高级版引入bootstrap.js的一个办法
Mar 21 PHP
PHP实现财务审核通过后返现金额到客户的功能
Jul 04 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/04/24 PHP
用PHP读取和编写XML DOM的实现代码
2011/02/03 PHP
APACHE的AcceptPathInfo指令使用介绍
2013/01/18 PHP
PHP IE中下载附件问题解决方法
2014/01/07 PHP
删除html标签得到纯文本可处理嵌套的标签
2014/04/28 PHP
PHP怎样用正则抓取页面中的网址
2016/08/09 PHP
PHP7匿名类用法分析
2016/09/26 PHP
PHP实现的curl批量请求操作示例
2018/06/06 PHP
PHP getNamespaces()函数讲解
2019/02/03 PHP
小型js框架veryide.librar源代码
2009/03/05 Javascript
document.compatMode介绍
2009/05/21 Javascript
jquery URL参数判断,确定菜单样式
2010/05/31 Javascript
js当一个变量为函数时 应该注意的一点细节小结
2011/12/29 Javascript
json+jQuery实现的无限级树形菜单效果代码
2015/08/27 Javascript
JavaScript在网页中画圆的函数arc使用方法
2015/11/13 Javascript
AngularJs Dependency Injection(DI,依赖注入)
2016/09/02 Javascript
微信小程序之仿微信漂流瓶实例
2016/12/09 Javascript
微信小程序 空白页重定向解决办法
2017/06/27 Javascript
Vue工程模板文件 webpack打包配置方法
2017/12/26 Javascript
Koa2微信公众号开发之本地开发调试环境搭建
2018/05/16 Javascript
Bootstrap table中toolbar新增条件查询及refresh参数使用方法
2018/05/18 Javascript
JavaScript设计模式之职责链模式应用示例
2018/08/07 Javascript
了解重排与重绘
2019/05/29 Javascript
JavaScript使用面向对象实现的拖拽功能详解
2019/06/12 Javascript
使用rpclib进行Python网络编程时的注释问题
2015/05/06 Python
Python可变参数函数用法实例
2015/07/07 Python
在Python中移动目录结构的方法
2016/01/31 Python
python 简单照相机调用系统摄像头实现方法 pygame
2018/08/03 Python
python基础 range的用法解析
2019/08/23 Python
python3获取url文件大小示例代码
2019/09/18 Python
python爬虫爬取图片的简单代码
2021/01/18 Python
css3.0 图形构成实例练习一
2013/03/19 HTML / CSS
佳能加拿大网上商店:Canon eStore Canada
2018/04/04 全球购物
园林毕业生自我鉴定范文
2013/12/29 职场文书
求职信的七个关键技巧
2014/02/05 职场文书
2015年秋季小学开学标语
2015/07/16 职场文书