> 백엔드 개발 > PHP 튜토리얼 > PHP의 solr 작업 클래스 및 데모

PHP의 solr 작업 클래스 및 데모

PHP中文网
풀어 주다: 2023-02-28 22:18:01
원래의
3049명이 탐색했습니다.

PHP의 Solr 연산 클래스와 데모

1. 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;
    }
 
}
로그인 후 복사

2.

"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의 동작 클래스와 데모를 소개하고 있으며, 관련 내용을 더 보시려면 PHP 중국어 홈페이지(www.php.cn)를 참고하시기 바랍니다. )!

관련 기사:

php-solr 확장 설치

검색 솔루션 solr php를 설치하고 구성하는 방법은 무엇입니까?

PHP 애플리케이션과 Solr 검색 엔진 통합

관련 라벨:
원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿