2017-10-18 3 views
0

Ich habe einen Solr-Index, der Objekte enthält (in der Praxis Aufzeichnungen historischer Bilder von WW1-Soldaten und Audioaufnahmen von Oral History), die alle auf benannte Agenten verweisen. Der Index enthält auch einfache Datensätze aller Agenten und die Objektdatensätze enthalten deren IDs (beachten Sie jedoch, dass die Agentensätze keine Objekt-IDs enthalten).So finden Sie alle Dokumente, die übereinstimmende Metadatenwerte in Solr haben

Typischer Objektdatensatz-Extrakt:

"agentReference": [ 
     "agent-571916" 
    ], 

Ich fürchte, ich ziemlich neu bin auf Solr, damit ich weiß nicht, ob dies eine einfache (in der Tat offensichtlich) Frage ist, oder komplexer. Was ich erhalten möchte, ist eine Liste der Agenten-IDs, denen mehrere Objekte zugeordnet sind, und die IDs dieser Objekte. So etwas wie ...

agenten 571.916: Objekt-12345 Objekt-23456 Objekt-98765

Entschuldigt, wenn dies eine unwissende Frage. Ich könnte ein Skript schreiben, das alle Agenten-IDs durchläuft und eine Abfrage aufruft, um Objekte für jeden zurückzugeben, aber ich müsste sie dann mit eindeutigen Zählungen abgleichen, und für den fraglichen Datensatz sind es wahrscheinlich etwa 16.000 Agenten.

Edit: Ich hätte hinzugefügt, dass ich facet natürlich durch agentReference und facet.mincount = 2 anwenden kann, die mich nah, aber es erhält zurück die Objekt-IDs für jeden dieser Agenten, die ich brauche.

<int name="agent-2876">5</int> 
<int name="agent-443281">5</int> 
<int name="agent-239379">4</int> 
<int name="agent-257708">4</int> 
<int name="agent-26269">4</int> 
<int name="agent-279277">4</int> 

Antwort

1

Json Facettierung sollte Ihr Problem lösen [1].

Es ist verfügbar ab Solr 5 und es ist recht einfach zu bedienen. Sie können Ihre Statistiken zu den Ergebnissen nach Belieben in der Dokumentation komplizieren.

[1] http://yonik.com/json-facet-api/

+0

Leider der Endpunkt zur Zeit läuft noch Solr 4.10.4, aber die Arbeit ist im Gang, zu aktualisieren. Sobald das erledigt ist, werde ich das sicherlich testen, da es aussieht, als ob es die Antwort sein sollte. Danke – jamesinealing

+1

4.10 unterstützt Pivotfacetting, das ist das gleiche Feature (wie es hier verwendet wird) mit der alten Syntax. Etwas wie 'facet = true & facet.pivot.mincount = 1 & facet.pivot = agentReference, objectId' könnte funktionieren, obwohl es für das Rückkehrformat etwas ausführlich ist. – MatsLindh

Verwandte Themen