• 技术文章 >后端开发 >php教程

    php的solr的操作类及demo

    PHP中文网PHP中文网2017-03-24 13:25:44原创2384

    php的solr的操作类及demo

    一、solr类

    '127.0.0.1','port' => '8080');
        /**
         * 设置solr库选择
         * @param $core string 库名称
         */
        public static function setCore($core){
            if($core) self::$options['path']='solr/'.$core;
        }
     
        /**
        * 增加solr索引
        * @param $fieldArr 索引字段及值
        * @return bool true
         */
        public static function addDocument($fieldArr=array()){
            $client = new SolrClient(self::$options);
            $doc = new SolrInputDocument();
            foreach($fieldArr as $k => $v){
                $doc->addField($k,$v); 
            }
            $client->addDocument($doc);
            $client->commit();
            return true;
        }
     
        /**
        * 删除索引
        * @param $id 主键id id可以为数组形式,应用于多选的情况
        * @return bool true
        */
        public static function delDocument($ids){
            $client = new SolrClient(self::$options);
            if(is_array($ids))
                $client->deleteByIds($ids);
            else
                $client->deleteById($ids);
            $client->commit();
            return true;
        }
     
        /**
        * 查询数据
        * @param $qwhere     关键字
         * @param $fqwhere 附加条件,根据范围检索,适用于数值型
        * @param $getField    查询字段
         * @param $sort 排序 array('duration'=>'asc')  asc:升序,desc:降序
        * @param $pageindex   查询页数
        * @param $pagesize    每页显示条数
        */
        public static function selectQuery($qwhere=array(),$fqwhere=array(),$getField=array(),$sort=array(),$pageindex=1,$pagesize=20){
            $client = new SolrClient(self::$options);
            $query = new SolrQuery();
            $sel = '';
            foreach($qwhere as $k => $v){
    //            $sel .= ' +'.$k.':'.$v;
                $sel = "{$k} : \"{$v}\"";
            }
            $query->setQuery($sel);
            //关键字检索
     
            //附加条件,根据范围检索,适用于数值型
            if($fqwhere){
                $query->setFacet(true);
                foreach($fqwhere as $k => $v)
                    $query->addFacetQuery($v);
                //$query->addFacetQuery('price:[* TO 500]');
            }
     
            //查询字段
            if($getField){
                foreach($getField as $key => $val)
                    $query->addField($val);
            }
            //排序
            if($sort){
                foreach($sort as $k => $v){
                    if($v == 'asc')
                        $query->addSortField($k,SolrQuery::ORDER_ASC);
                    elseif($v == 'desc')
                        $query->addSortField($k,SolrQuery::ORDER_DESC);
                }
            }
            //分页
            $query->setStart(self::getPageIndex($pageindex,$pagesize));
            $query->setRows($pagesize);
             
            $query_response = $client->query($query);
            $response = $query_response->getResponse();
            return $response;
        }
     
        /**
        * 分页数据处理
        */
        private static function getPageIndex($pageindex,$pagesize){
            if($pageindex<=1)
                $pageindex = 0;
            else
                $pageindex = ($pageindex-1)*$pagesize;
            return $pageindex;
        }
     
    }

    二、操作demo

    "wang jing jie",
    );
    print_r(phpSolr::selectQuery($qwhere));
     
    //添加
    $fieldArr = array(
        "id" => 15,
        "username" => "si sheng chao",
        "usertype" => 1,
        "last_update_time" => "2016-01-05T03:35:13Z",
    );
    phpSolr::addDocument($fieldArr);
     
    //删除
    //phpsolr::delDocument(15);

    以上就介绍了php的solr的操作类及demo,包括了方面的内容,更多相关内容请关注PHP中文网(m.sbmmt.com)!

    相关文章:

    安装php-solr扩展

    搜索方案 solr+php如何安装配置?

    集成 PHP 应用和 Solr 搜索引擎

    声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn核实处理。
    专题推荐:solr,demo
    上一篇:Nginx 替换WEBRICK 下一篇:自己动手写 PHP MVC 框架(40节精讲/巨细/新人进阶必看)

    相关文章推荐

    • 设计API接口时,要注意这些地方!• PHP网站常见一些安全漏洞及防御方法• thinkphp session 的有关问题• 一个PHP软件工程师应该掌握的10项技能 • PHP 顶用java
    1/1

    PHP中文网