2016-09-26 4 views
0

Ich möchte eine SQL-Abfrage in einem Solr-Befehl "konvertieren".Solr Count Group von

Ich habe 2 SQL-Tabellen "Jobs" und "Unternehmen".

heute die Zahl der Arbeitsplätze von einem Unternehmen veröffentlicht zu zählen, ich Abfrage:

select c.id, count(j.id) 
from companies c 
left join jobs j on j.client_id = c.id 
group by c.id; 

In anderen I 2 Sammlungen „Jobs“ haben und „Unternehmen“ gibt es die gleichen Felder.

Wie kann ich die Abfrage unten in solr "konvertieren"?

Ich sah, dass es möglich ist, eine Verknüpfung mit einer übergeordneten Auflistung herzustellen, aber ich möchte keine Hierarchie zwischen Job und Firma erstellen (es ergibt keinen Sinn).

Antwort

0

Sie können keine direkte Version der Abfrage implementieren, da Solr nicht die Art und Weise verbindet, wie Sie Joins durchführen möchten. Eine mögliche Lösung wäre facet on client_id in jobs, so erhalten Sie eine Zählung für jede Firmen-ID, dann suchen Sie Werte aus diesem Ergebnis, wenn Sie die Zählungen für jede Firma anzeigen (wenn Sie wirklich den linken Join-Teil benötigen). Wenn die client_id nicht in den Daten vorhanden ist, ist ihre Anzahl 0. So etwas wie facet=true&facet.field=client_id sollte funktionieren.

Wenn Sie nur Zahlen für Firmen benötigen, die im Index vorhanden sind, würde ich den Firmennamen zusammen mit der ID indizieren, so dass Sie direkt auf den Namen zugreifen können.

+0

Ja Facette funktioniert möglicherweise, wenn ich in "Jobs" Sammlung anfordern, aber ich fordere in "Unternehmen" Sammlung, die keine job_id hat. – barden

+0

Wie ich beschrieben habe - müssen Sie zwei Abfragen durchführen, wenn Sie auch Firmen ohne Jobs abrufen möchten. Entweder indem Sie zuerst nach Firmen suchen und dann die Firmen-IDs verwenden, um das Ergebnis in Jobs zu begrenzen, oder indem Sie zuerst Jobs suchen und dann diese Facette verwenden, um die Zählungen für jede Firma in Ihrer Ergebnismenge zu generieren. Sie könnten dafür möglicherweise Streaming-Ausdrücke verwenden, aber das hängt stark davon ab, auf welcher Version von Solr Sie sich befinden (und ob Ihre Bibliothek dies unterstützt). – MatsLindh