2016-04-19 9 views
0

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.

+0

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

Antwort

0

Wenn Sie Solr 6 verwenden, können Sie die Ergebnisse möglicherweise auf die übergeordneten Datensätze mit Graph query parser erweitern.

+0

Danke, leider sind wir immer noch bei 5.0, also Graph Parser ist keine Option – Shamik