文档章节

php +solr 服务类

杨太化
 杨太化
发布于 2014/11/11 10:39
字数 438
阅读 25
收藏 1
点赞 0
评论 0
<?php
/**
 * solr 操作类[solr php client]
 * Created by PhpStorm.
 * User: Administrator
 * Date: 14-11-6
 * Time: 下午3:42
 */



class solr{
    private $user;
    private $pwd;
    private $host;
    private $port;
    private $core;

    public function solr($config=array()){
        $this->Init_Config($config);
    }
    private function Init_Config($config){
        global  $_G;
        if(empty($config)&& iN_array('solr',$_G['setting']['plugins']['available'])){
            $config=$_G['cache']['plugin']['solr'];
        }
        if(!empty($config)&&is_array($config)){
            foreach($config as $key=>$value){
                if(!array_key_exists($key,get_class_vars(get_class($this)))){
                    continue;
                }
                $this->setOption($key,$value);
            }
        }

    }
    /**
    +------------------------------------------------------------------------
     *设置类属性值函数
    +------------------------------------------------------------------------
     * @param mix $key
     * @param mix $value
     */
    private function setOption($key,$value){
        $key=strtolower($key);
        $this->$key=$value;
    }

    /**
     * 认证调用的字符串
     * @return string
     */
    private function Authentication(){
        return $this->user.':'.$this->pwd;
    }

    /**
     * 请求的参数
     * @param bool $Auth
     * @return string
     */
    public  function QueryUrl($Auth=false){
        $url='http://';
        $url.=$Auth?$this->Authentication().'@':'';
        $url.=$this->host.':'.$this->port.'/'.$this->core.'/';
        return $url;

    }

    //生成搜索链接
    private function generateSearchUrl( $servlet, $params = array()){
        $searchurl=$this->QueryUrl();
        $queryString = http_build_query($params, null, "&");
        $queryString = preg_replace('/%5B(?:[0-9]|[1-9][0-9]+)%5D=/', '=', $queryString);
        return $searchurl . $servlet .'?'. $queryString;
    }

    private function curlPost($url, $post, $timeout=3, $charset='gb2312', $contentType = "") {
        $ch = curl_init();
        curl_setopt($ch, CURLOPT_URL, $url);
        $header[] = 'Host:'.parse_url($url, PHP_URL_HOST);
        $header[] = $contentType?$contentType:'Content-type: application/x-www-form-urlencoded;charset='.$charset;
        $header[] = 'Content-Length:'.strlen($post);
        curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
        curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); // 从证书中检查SSL加密算法是否存在
        curl_setopt($ch, CURLOPT_FAILONERROR, true);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
        curl_setopt($ch, CURLOPT_HTTPAUTH, CURLAUTH_ANY);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
        curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true);
        curl_setopt($ch, CURLOPT_TIMEOUT, $timeout); // 设置超时限制防止死循环
        curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
        curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
        curl_setopt($ch, CURLOPT_POST, 1);
        curl_setopt($ch, CURLOPT_POSTFIELDS, $post);

        $contents = curl_exec($ch);
        curl_close($ch);
        return $contents;
    }

    /**
     * post提交solr更新
     * @param  $updatedata
     * @return mixed
     */
    public function solrUpdate($updatedata=array(),$params=array()){
        $queryurl=$this->generateSearchUrl('update',$params);
        $contentType = "Content-type:application/json";
        $response = $this->curlPost($queryurl,$updatedata,3,'',$contentType);
        return $response;
    }
    /**
     *  搜索数据
     *
     */
    public function search($params=array()){
        $searchUrl = $this->generateSearchUrl("select", $params);
        $contentType = "Content-type:application/json";
        $response = $this->curlPost($searchUrl, '', 3, '', $contentType);
        return $response;
    }
    //对象转数组
    private static function object2array($object = null){
        $object = is_object($object)?get_object_vars($object):$object;
        $object = (!$object)?"x":$object;
        if(is_array($object)){
            foreach ($object as $k=>$v){
                if(is_object($v))
                    $object[$k] = self::object2array($v);
            }
        }
        return $object;
    }




}

?>


© 著作权归作者所有

共有 人打赏支持
杨太化
粉丝 13
博文 226
码字总数 26188
作品 0
深圳
程序员
BroadLeaf项目搜索功能改进

关于Solr Broadleaf项目中关于商品的搜索使用了嵌入式的Solr服务器,这个从配置文件中可以看出来。 项目主页: http://www.broadleafcommerce.com/ 示例网站: http://demo.broadleafcommerc...

_夏天的风_
2014/09/10
0
1
Spring Boot 中使用 SolrCloud

Lucene是一个Java语言编写的利用倒排原理实现的文本检索类库; Solr是以Lucene为基础实现的文本检索应用服务。Solr部署方式有单机方式、多机Master-Slaver方式、Cloud方式。 SolrCloud是基于...

PengLei
2017/10/19
0
0
Apache Solr PHP Client

从名字就可以看出,这是 Solr 的 PHP 客户端开发包。 示例代码: requireonce('Apache/Solr/Service.php'); $solr = new ApacheSolr_Service('localhost', 8180, '/solr/');...

匿名
2010/05/29
3.5K
0
solr6.6初探之solrj

一. solrj简介:   solrj可以使Java应用程序很方便的访问与操作solr。solrj有几个核心类,分别为:1.SolrClient 2.SolrRequests 3.SolrQuerys 4.SolrReponses   tips:该jar包可以在${solr....

java~nick
2017/10/24
0
0
CentOS下安装Solr5.3

https://lucene.apache.org/solr/ 前言 Solr现在是一个独立的服务器。 从Solr5.0开始,Solr不再发布为在任何Servlet容器中部署的“war”Web应用程序包(Web Application Archive)。Solr现在...

沉淀岁月
2016/09/08
5
0
mmseg4j-1.9.1与Lucene-4.10.1异常

我用的Lucene4.10.1和mmseg4j的1.9.1在部署solr的时候,core没有加载进来,我add core之后就报了这个错 ERROR servlet.SolrDispatchFilter - null:java.lang.VerifyError: class com.chenlb.......

jhnm
2014/11/15
1K
3
solr导入pdf操作

索引数据源并不会一定来自于数据库、XML、JSON、CSV这类结构化数据,很多时候也来自于PDF、word、html、word、MP3等这类非结构化数据,从这类非结构化数据创建索引,solr也给我们提供了很好的...

zcl111
2016/07/09
28
0
mac php solr扩展安装

1、download solr-0.9.11.tgz 2、 tar zxvf solr-0.9.11 cd solr-0.9.11 ../your path/phpize ./configure --with-php-config=/your path/php-config make && make install 3、update php.in......

战斗机
2014/05/21
0
0
nutch与起点R3集成之笔记(三)

四、抓取网页,建立solr索引 在抓取网页前,要保证起点R3处在运行状态。即 在浏览器中键入 http://127.0.0.1:880/ 后,会出现如下窗口: 在linux或cygwin中运行nutch抓取网页命令为 :bin/n...

夜游神
2011/07/25
0
8
Apache solr使用

一、Solr介绍 最近在一个项目中做了一个全文检索的功能,刚开始本来打算用Apache Lucene去实现,毕竟之前对Lucene有一点了解,但是在网上看技术类文章时看见了别人介绍Apache Solr,感觉挺好...

引鸩怼孑
2015/09/10
91
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

javascript前端AES加密解密

参考了一下网上的代码加上自已的一些想法,修改,key也可以是中文, 要引入一个aes.js的js文件。 html代码 <html> <head> <title>AES加解密</title> <meta http-equiv="Content-Type"......

oisan_
6分钟前
0
0
MacOS和Linux内核的区别

有些人可能认为MacOS和Linux内核有相似之处,因为它们可以处理类似的命令和类似的软件。甚至有人认为苹果的MacOS是基于linux的。事实上,这两个内核的历史和特性是非常不同的。今天,我们来看...

六库科技
10分钟前
0
0
Vue.js-自定义事件例子

自定义组件的 v-model 2.2.0+ 新增 一个组件上的 v-model 默认会利用名为 value 的 prop 和名为 input 的事件,但是像单选框、复选框等类型的输入控件可能会将 value 特性用于不同的目的。m...

tianyawhl
14分钟前
0
0
mybatis中获取sqlSession的源码分析

0 SqlSessionFactoryBuilder类 SqlSessionFactoryBuilder sqlSessionFacotory=SqlSessionFactoryBuilder().build(reader) public SqlSessionFactory build(Reader reader) { return build(re......

writeademo
14分钟前
0
0
RobotThread.cpp

#include "RobotThread.h"RobotThread::RobotThread(int argc, char** pArgv, const char * topic) :m_Init_argc(argc), m_pInit_argv(pArgv), m_topic(topic){/** ......

itfanr
17分钟前
0
0
防御ddos攻击的常见方法

DDoS攻击是一种特殊形式的拒绝服务攻击。它利用多台已经被攻击者所控制的机器对某一台单机发起攻击,在带宽相对的情况下,被攻击的主机很容易失去反应能力。分布式拒绝服务攻击(DDoS) 是一种...

上树的熊
17分钟前
0
0
Vue全家桶问题合集(很多eslint规范问题)

自己使用Vue全家桶问题合集(很多eslint规范问题) 遇到很多问题一一道来。 1.vue报错 Do not use built-in or reserved HTML elements as component id:header 组件,不能和html标签重复 he...

kisshua
19分钟前
0
0
Spring框架中的设计模式(四)​

Spring框架中的设计模式(四) 本文是Spring框架中使用的设计模式第四篇。本文将在此呈现出新的3种模式。一开始,我们会讨论2种结构模式:适配器和装饰器。在第三部分和最后一部分,我们将讨...

瑞查德-Jack
24分钟前
0
0
如何玩转小程序+公众号?手把手教你JeeWx小程序CMS与公众号关联

随着微信小程序新功能、新入口的不断更新,小程序的商业价值逐步增强,特别是小程序与公众号的深度融合,已经让小程序成为各行业新的营销渠道。Jeewx平台专注小程序的开发,逐步完善小程序生...

Jeecg
29分钟前
0
0
IDEA开发vue.js卡顿

由于新项目使用了vue.js。在执行cnpm install后会在node_modules这个文件下面生成vue的相关依赖文件,这个时候当执行npm run dev命令时,会导致IDEA出现卡死的问题。 解决办法:在idea中设置...

落雪飞声
31分钟前
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部