Ich habe die verwandten Fragen auf dieser Seite durchgelesen, aber keine relevante Lösung gefunden.Facettieren mit SolrJ und Solr4
Wenn mein Solr4 Index verwendet eine HTTP-Anforderung des
&facet=true&facet.field=country
Antwortformular Abfrage enthält alle verschiedenen Ländern zusammen mit Zählungen pro Land.
Wie kann ich diese Informationen mit SolrJ erhalten? Ich habe versucht, die folgenden, aber es gibt nur Gesamtzählungen in allen Ländern, nicht pro Land:
solrQuery.setFacet(true);
solrQuery.addFacetField("country");
Die folgende zu funktionieren scheint, aber ich will nicht vorher alle Gruppierungen explizit festgelegt haben:
solrQuery.addFacetQuery("country:usa");
solrQuery.addFacetQuery("country:canada");
Zweitens bin ich nicht sicher, wie Sie die Facettendaten aus dem QueryResponse-Objekt extrahieren.
So zwei Fragen:
1) Mit SolrJ wie kann ich auf einem Feld Facette und geben die Gruppierungen, ohne explizit die Gruppen zu spezifizieren?
2) Mit SolrJ, wie kann ich die Facettendaten aus dem QueryResponse-Objekt extrahieren?
Danke.
Update:
Ich habe auch versucht, etwas Ähnliches zu Sergey Antwort (unten).
Der obige Code zeigt ffList mit size = 1 und die Schleife durchläuft 1 Iteration. In der Ausgabe ffname = "country" und ffcount ist die Gesamtzahl der Zeilen, die der ursprünglichen Abfrage entsprechen.
Es gibt hier keine länderspezifische Aufschlüsselung.
Ich sollte erwähnen, dass ich auf dem gleichen SolrQuery-Objekt auch addField und addFilterQuery aufrufen. Nicht sicher, ob diese Auswirkungen Facettierung:
solrQuery.addField("user-name");
solrQuery.addField("user-bio");
solrQuery.addField("country");
solrQuery.addFilterQuery("user-bio:" + "(Apple OR Google OR Facebook)");
Update 2:
Ich glaube, ich habe es, wieder auf das, was Sergey sagte unten. Ich habe das List-Objekt mit FacetField.getValues () extrahiert.
In dem obigen Code entspricht die Label-Variable jeder Facettengruppe, und count ist die entsprechende Anzahl für diese Gruppierung.
Danke Sergey. Ich habe meine obige Frage aktualisiert, um den von Ihnen erwähnten Ansatz zu berücksichtigen. –