如何从他们的网站http://yonik.com/solr-count-distinct/获取solr中的唯一计数,以及从这个SO答案中得到一个非常好的答案:How to select distinct field values using Solr?
我的问题是我不明白如何将这个cURL语法翻译成PHP,这就是我编写的代码。
官方示例似乎很容易从在此代码视角中发生的事情开始:
$ curl http://localhost:8983/solr/techproducts/query -d '
q=*:*&
json.facet={
x : "unique(manu_exact)" // manu_exact is the manufacturer indexed as a single string
}'
但是,我只熟悉使用PHP向我的服务器提交solr查询的两种方法。第一种,使用直接URL:
$url = "localhost:8983/solr/asdf/select?q=*:*";
$Q = curl_init();
curl_setopt($Q, CURLOPT_RETURNTRANSFER, true);
curl_setopt($Q, CURLOPT_URL, $url);
$rawData = curl_exec($Q);
$data = json_decode($rawData,true);
或通过发布值:
$url = "localhost:8983/solr/asdf/select";
$solr_q = "q=date_range:[2016+TO+*]&fq=title:manager&wt=json&indent=true";
$ch = curl_init();
curl_setopt($ch, CURLOPT_POSTFIELDS, $solr_q);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_URL, $url);
$rawData = curl_exec($ch);
$json = json_decode($rawData,true);
我正在运行solr 5.4.1,所以我知道我有能力做json facet,但我不知道如何使用命令行curl在官方示例之外发出请求。如何以与我目前在PHP中使用solr相同的方式使用此json.facet
?
答案 0 :(得分:2)
一如既往 - 在您发布SO之后,您就会找到答案。如果有人仍然可以为我做一些更好的方式,我会非常感激 - 但这在技术上可以作为一个直接的URL:
http://localhost:8983/solr/asdf/select?q=*:*&json.facet.x="unique(field)"&wt=json&indent=true&rows=0
或使用我在OP中使用的语法:
...
$url = "http://localhost:8983/solr/asdf/select";
$post = "q=*:*&json.facet.x=\"unique(field)\"&rows=0&wt=json&indent=true";
...
我缺少的是:
&json.facet.x=
而不是&json.facet=
,{ }
字符需要用引号" "
替换,以便查询到作为URL或POST请求工作。我真的希望这对某人有所帮助,因为它让我感到沮丧,因为现在大约一个月没有结束.....