2016-08-18 5 views
1

Es gibt eine ganz gute Antwort dafür, wie eine einzigartige Zählung in solr von ihrer Website zu bekommen, http://yonik.com/solr-count-distinct/ und daraus SO beantworten: How to select distinct field values using Solr?Zählung verschieden in solr ohne Zeilenbefehl cURL

Mein Problem ist, dass ich nicht verstehe, wie diese cURL Syntax in PHP zu übersetzen, das ist, was in ich bin Codierung

Die offizielle Beispiel leicht genug, scheint von einem zu folgen, was in diesem Code Perspektive vor sich geht.

$ 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 
}' 

Ich bin jedoch nur mit zwei Möglichkeiten vertraut, eine solr-Abfrage mit PHP an meinen Server zu senden. Die erste, die über eine direkte 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); 

oder durch Entsendung Werte:

$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); 

Ich bin mit solr 5.4.1, so dass ich weiß, ich habe die Fähigkeit, json Facetten zu tun, aber Ich habe keine Ahnung, wie man die Anfrage außerhalb des offiziellen Beispiels mit der Befehlszeilencurl ausführen kann. Wie nutze ich diese json.facet in der gleichen Weise wie ich derzeit Solr in PHP verwende?

Antwort

0

Wie immer - gleich nachdem Sie einen Beitrag auf SO gemacht haben, finden Sie die Antwort. Wenn jemand könnte noch etwas Licht auf, vielleicht einen besser Weg für mich, dies zu tun, wäre ich sehr dankbar sein - aber das funktioniert technisch als direkte URL:

http://localhost:8983/solr/asdf/select?q=*:*&json.facet.x="unique(field)"&wt=json&indent=true&rows=0 

oder mit der Syntax I in dem verwendeten OP:

... 
$url = "http://localhost:8983/solr/asdf/select"; 
    $post = "q=*:*&json.facet.x=\"unique(field)\"&rows=0&wt=json&indent=true"; 
... 

die Dinge, die ich vermisst wurde, ist, dass:

  1. ich die json Facette zu nennen hatte, (&json.facet.x= statt &json.facet= und die { } Zeichen müssen durch Anführungszeichen " " ersetzt werden, damit die Abfrage als eine URL- oder eine POST-Anforderung funktioniert.

ich wirklich hoffe, hilft jemand, wie es mir jetzt etwa einen Monat ohne Ende ist frustrierend .....