如何在POST中设置SolR参数

时间:2014-08-14 14:11:41

标签: php solr

我遇到了Solr select查询的问题。你能帮帮我吗?

我想在POST方法中转换此GET方法查询:

http://localhost:8983/solr/french_2/select/?q=**&facet.field=field001&facet.field=field002&fq=(website_id:"1") AND (product_status:"1")&sort=field001 asc

这是我的新查询。第一部分工作正常。问题是我尝试设置facet.field,facet.range,stats.field参数。

http://localhost:8983/solr/french_2/select
$postFields['q'] = '**';
$postFields['fq'] = '(website_id:"1") AND (product_status:"1") AND (instock_int:"1") AND (filter_visibility_int:"3" OR filter_visibility_int:"4") AND (category_id:"203" OR category_id:"203")';
$postFields['sort'] = '203_position_decimal asc';
$sh = curl_init($url);

    curl_setopt($sh, CURLOPT_HEADER, 0);
    if(is_array($postFields)) {
        curl_setopt($sh, CURLOPT_POST, true);
        curl_setopt($sh, CURLOPT_POSTFIELDS, $postFields);
    }
    curl_setopt($sh, CURLOPT_RETURNTRANSFER, 1);

    curl_setopt( $sh, CURLOPT_FOLLOWLOCATION, true );
    if ($type == 'json') {
        curl_setopt( $sh, CURLOPT_HEADER, true );
    }

    if (isset($_GET['user_agent']) || isset($_SERVER['HTTP_USER_AGENT'])) {
        curl_setopt( $sh, CURLOPT_USERAGENT, isset($_GET['user_agent']) ? $_GET['user_agent'] : $_SERVER['HTTP_USER_AGENT'] );
    }

    $this->setupSolrAuthenticate($sh);

    if ($type == 'json') {
        list( $header, $contents ) = @preg_split( '/([\r\n][\r\n])\\1/', curl_exec($sh), 2 );
        $output = preg_split( '/[\r\n]+/', $contents );
    }else{
        $output = curl_exec($sh);
        $output = json_decode($output,true);
    }

    curl_close($sh);
    return $output;

如何设置facet.field =“field001,field002”或类似的内容?

非常感谢。

1 个答案:

答案 0 :(得分:0)

您面临的问题是什么?

您必须设置:

面=上

facet.field = field001

facet.field = field002