分享

php solr扩展类

 昵称21427134 2015-01-08
简单的应用了一下php的solr扩展,做了一下封装,分享给大家



<?php
/**
 * solr数据操作
 * @author sunlibo
 */
class phpSolr{

//solr服务器地址及端口设置
private static $options = array('hostname' => '192.168.12.210','port' => '8081');

    /**
     * 设置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;
        }
        $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;
}

}
?>

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约