Mam kwerendy MySQL:Replikacja LEFT JOIN na wielu polach w Solr
select t1.to_step,count(t1.to_step) from tmp t1 left join tmp t3 on
(t1.to_step = t3.from_step and t1.applicant_id=t3.applicant_id)
where t3.to_step is null group by t1.to_step
Próbuję zrobić powyższe solr za pomocą łączy. Wiem, że sprzężenia w solr działają jak zapytanie zagnieżdżone, ale nie jestem w stanie znaleźć właściwego sposobu na uzyskanie wszystkich rekordów, jak otrzymuję z zapytania mysql.
poniżej to czego używam:
q: "-_query_:\"{!join from=from_step_s to=to_step_s}from_step_s:[* TO *]\"",
To daje mi częściowy zestaw wyników. Zasadniczo mój dokument solr składa się z pól applicant_id
, from_step_s
i to_step_s
i chcę uzyskać dokument, w którym nie ma połączenia od to_step_s
do from_step_s
dla konkretnego zestawu applicant_id
. Myślę, że problem jest gdzieś ze względu na applicant_id
łączenie nie wykonywane w zapytaniu Solr (co nie wiem jak to zrobić), z powodu którego from_step_s
jednego dokumentu zostanie dopasowany do to_step_s
innego dokumentu z innym applicant_id
.
Ale czy jest sposób, w jaki mogę powtórzyć zestaw wyników zapytania nadrzędnego z wewnątrz podkwerendy lub coś podobnego do iteracji w zestawie wynikowym? –
Próbuję zaimplementować statystykę .. to dlatego wymóg.if wstępnie obliczam i przechowuję statystyki wymagałoby bardzo częstych aktualizacji .. –
Jeśli czas nie ma znaczenia: Możesz zbudować własny QueryComponent lub QParser i pracować bezpośrednio na lucene indeks. Jeśli wszystkie twoje "claim_id" z wszystkimi odpowiednimi DocSets mogą być buforowane w pamięci głównej, możesz nawet pomyśleć o własnej wersji JoinQuery. –