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-solr扩展
搜索方案 solr+php如何安装配置?
集成 php 应用和 solr 搜索引擎
   
 
   