Ich habe eine Reihe von Dokumenten indiziert, die eine Pseudo-Eltern-Kind-Beziehung hat. Jedes untergeordnete Dokument hatte einen Verweis auf das übergeordnete Dokument. Aufgrund einiger Verfügbarkeitskomplexität werden diese Dokumente nicht zur Unterstützung von Block-Join indiziert, d. H. Anstelle einer verschachtelten Struktur sind sie alle flach. Hier ein Beispiel:Solr nur übergeordnetes Dokument zurückgeben auf untergeordnete Abfrage übereinstimmen
<doc>
<field name="id">1</field>
<field name="title">Parent title</field>
<field name="doc_id">123</field>
</doc>
<doc>
<field name="id">2</field>
<field name="title">Child title1</field>
<field name="parent_doc_id">123</field>
</doc>
<doc>
<field name="id">3</field>
<field name="title">Child title2</field>
<field name="parent_doc_id">123</field>
</doc>
<doc>
<field name="id">4</field>
<field name="title">Misc title2</field>
</doc>
Was ich suche, ist, wenn ich „title2“ zu suchen, sollte das Ergebnis der folgenden zwei Dokumente zurückbringen, 1 Anpassung der Elternteil und ein basierend auf einer regulären Spiel.
<doc>
<field name="id">1</field>
<field name="title">Parent title</field>
<field name="doc_id">123</field>
</doc>
<doc>
<field name="id">4</field>
<field name="title">Misc title2</field>
</doc>
Mit Block-Join-Unterstützung, könnte ich verwendet habe Block-Join Eltern Abfrage Parser,
q={!parent which="content_type:parentDocument"}title:title2
Transforming Ergebnisdokumente ist eine alternative, aber es hat die umgekehrte Unterstützung durch ChildDocTransformerFactory
.
Ich frage mich nur, ob es eine Möglichkeit gibt, die Abfrage anders zu behandeln. Irgendwelche Hinweise werden geschätzt.
In [der Referenzdokumentation des BlockJoinParser] (https://wiki.apache.org/confluence/display/solr/Other+Parsers#OtherParsers-BlockJoinQueryParsers) ist eine Notiz über die Verwendung von über die Verwendung von ' welches ". Wahrscheinlich gibt es den Weg zu gehen? – cheffe