2015-11-15 7 views
7

ich Index benötigen ein Patent Katalog, der die folgende Datenstruktur:Wie Index ein Array von Hashes mit Solr

"cpc": [ 
    { 
     "class": "61", 
     "section": "A", 
     "sequence": "1", 
     "subclass": "K", 
     "subgroup": "06", 
     "main-group": "45", 
     "classification-value": "I" 
    }, 
    { 
     "class": "61", 
     "section": "A", 
     "sequence": "2", 
     "subclass": "K", 
     "subgroup": "506", 
     "main-group": "31", 
     "classification-value": "I" 
    } 
] 

Ich frage mich, was der richtige Ansatz ist hier. Ich könnte cpc.class verwenden und es mit multiValued = "true" kombinieren.

Ich möchte Dokumente finden, die einen bestimmten CPC-Code entsprechen. Der CPC-Code kann teilweise sein. Im Moment ist meine Lösung einfach eine verschachtelte Referenz mit multiValued = true. Gibt es einen besseren Weg, dies zu tun?

<field name="cpc.class"     type="int" indexed="true" stored="true" multiValued="true" /> 
<field name="cpc.section"    type="string" indexed="true" stored="true" multiValued="true" /> 
<field name="cpc.sequence"    type="int" indexed="true" stored="true" multiValued="true" /> 
<field name="cpc.subclass"    type="string" indexed="true" stored="true" multiValued="true" /> 
<field name="cpc.subgroup"    type="int" indexed="true" stored="true" multiValued="true" /> 
<field name="cpc.main-group"   type="int" indexed="true" stored="true" multiValued="true" /> 
<field name="cpc.classification-value" type="string" indexed="true" stored="true" multiValued="true" /> 

Das Problem mit dieser Implementierung besteht darin, dass Dokumente zurückgegeben werden, die nicht wirklich den Suchkriterien entsprechen. Beispiel:

"cpc.section:A", 
"cpc.class:61", 
"cpc.subclass:Q", 
"cpc.main-group:8" 

Ich bekomme Dokumente, die diese Kombination nicht haben. Ich denke, der aktuelle Weg implementiert die Suche, so dass jedes Feld eine Liste ist und übereinstimmende Werte in einer beliebigen Kombination zurückgegeben werden. Ich muss es eingrenzen, damit nur die richtigen Kombinationen zurückgegeben werden.

+0

Was möchten Sie finden? Strukturieren Sie Ihren Solr-Index um das Finden, nicht um ursprüngliche Datenstruktur. –

+1

Der CPC ist ein hierarchischer Code, oder? Wenn Sie einen Patentindex modellieren, beachten Sie [hierarchische Facetten] (https://www.google.de/search?q=solr+hierarchical+facets). – cheffe

+0

Mögliches Duplikat von [Solr-Dokumenten mit Kindelementen?] (Http://stackoverflow.com/questions/5584857/solr-documents-with-child-elements) –

Antwort

0

Der beste Weg, dies mit Solr zu indizieren, ist die Aufteilung der verschachtelten Datenstrukturen (cpcs) in flache Dokumente und die Patent_id enthalten. Auf diese Weise kann eine beliebige Kombination von partiellen cpcs gesucht werden.