SOLR - Wie Facet-Zählungen auf Zeilen beschränkt werden, die im Resultset zurückgegeben werden

8

/select/?q=*:*&rows=100&facet=on&facet.field=category

Ich habe rund 100 000 Dokumente indiziert. Aber ich gebe nur 100 Dokumente mit Zeilen = 100 zurück. Die Anzahl der Facetten, die für die Kategorie zurückgegeben werden, gibt jedoch die Anzahl für alle indizierten Dokumente zurück.

Können wir die Facetten irgendwie auf die zurückgegebene Ergebnismenge beschränken? 100 Zeilen nur?

    
user489895 28.10.2010, 11:21
quelle

4 Antworten

1

Tut mir leid, aber ich glaube nicht, dass es möglich ist. Die Facetten basieren immer auf allen Dokumenten, die der Abfrage entsprechen.

    
Pascal Dimassimo 28.10.2010, 20:24
quelle
5

Ich glaube nicht, dass es auf direkte Weise möglich ist, wie von Pascal aufgezeigt wurde.

Ich kann zwei Möglichkeiten sehen, dies zu erreichen:

  1. Methode I: Zählen Sie selbst, indem Sie die 100 zurückgegebenen Ergebnisse aufrufen. Dies ist sehr einfach und schnell, wenn sie kategorische Felder sind, aber schwieriger, wenn es sich um Textfelder handelt, die mit Token versehen werden müssen, usw.

  2. Methode II: zwei Durchgänge:

    1. Führen Sie eine normale Abfrage ohne Facetten durch (Sie müssen nur Doc-IDs an dieser Stelle anfordern)
    2. Sammeln Sie alle IDs der zurückgegebenen Dokumente
    3. Führen Sie eine zweite Abfrage für alle Felder und Facetten durch und fügen Sie einen Filter hinzu, um das Ergebnis auf die IDs zu beschränken, die in setp 2 gesammelt wurden. So etwas wie:
      select/?q=:&facet=on&facet.field=category&fq=id:(312 OR 28 OR 1231 ...)

Der erste ist viel effizienter und ich würde für nicht-textliche Filds empfehlen. Die zweite ist rechenintensiv, hat aber den Vorteil, für alle Arten von Feldern zu arbeiten.

    
Hugo Zaragoza 29.06.2011 14:45
quelle
0

Keine wirkliche Antwort, aber vielleicht besser als nichts: Die Gruppierung der Ergebnisse (Auschecken aus dem Stamm!):

Ссылка

wobei facet.field = category dann group.field = category ist und Sie nur so viele Gruppen (Facettentreffer) erhalten wie Sie angegeben haben!

    
Karussell 03.11.2010 10:19
quelle
0

Wenn Sie immer dieselbe Abfrage (q=*:*) ausführen, können Sie facet.limit verwenden, zum Beispiel:

%Vor%

Sagen Sie uns, ob die von solr verwendete Reihenfolge in der Facette dieselbe ist wie in der Abfrage : .

    
Juampa 15.11.2010 17:14
quelle

Tags und Links