2014-10-15 4 views
12

Ich möchte Index & Suche verschachtelte Json in Solr. Hier ist mein json CodeWie Indexed & Search Nested Json in Solr 4.9.0

{ 
 
     "id": "44444", 
 
     "headline": "testing US", 
 
     "generaltags": [ 
 
      { 
 
       "type": "person", 
 
       "name": "Jayalalitha", 
 
       "relevance": "0.334", 
 
       "count": 1 
 
      }, 
 
      { 
 
       "type": "person", 
 
       "name": "Kumar", 
 
       "relevance": "0.234", 
 
       "count": 1 
 
      } 
 
     ], 
 
     "socialtags": { 
 
      "type": "SocialTag", 
 
      "name": "US", 
 
      "importance": 2 
 
     }, 
 
     "topic": { 
 
      "type": "Topic", 
 
      "name": "US", 
 
      "score": "0.936" 
 
     } 
 
    }

Wenn ich versuche, auf Index, erhalte ich die Fehlermeldung "Fehler beim Parsen von JSON Feldwert. Unexpected OBJECT_START"

Als wir versuchten, mehrwertig zu verwenden Feld & Index konnten wir nicht mit dem mehrwertigen Feld suchen? Sein zurückkehrendes "nicht definiertes Feld"

Auch bitte beraten Sie, wenn ich irgendwelche Änderungen in der schema.xml Datei vornehmen muss?

Antwort

6

Sie verschachteln untergeordnete Dokumente in Ihrem Dokument. Sie müssen die richtige Syntax für verschachtelte Kind Dokumente in JSON verwenden:

[ 
    { 
    "id": "1", 
    "title": "Solr adds block join support", 
    "content_type": "parentDocument", 
    "_childDocuments_": [ 
     { 
     "id": "2", 
     "comments": "SolrCloud supports it too!" 
     } 
    ] 
    }, 
    { 
    "id": "3", 
    "title": "Lucene and Solr 4.5 is out", 
    "content_type": "parentDocument", 
    "_childDocuments_": [ 
     { 
     "id": "4", 
     "comments": "Lots of new features" 
     } 
    ] 
    } 
] 

Werfen Sie einen Blick auf diese article die Dokumente JSON Kind beschreibt und Block verbindet.

+0

funktioniert nur mit solr 5.3+ – alex

0

das Format von erwähnten Verwendung @qux Sie "Expected: OBJECT_START but got ARRAY_START at [16]", "code": 400 konfrontiert werden als wenn JSON mit Start [....] als JSON-Array analysiert wird

{ 
 
     "id": "44444", 
 
     "headline": "testing US", 
 
     "generaltags": [ 
 
      { 
 
       "type": "person", 
 
       "name": "Jayalalitha", 
 
       "relevance": "0.334", 
 
       "count": 1 
 
      }, 
 
      { 
 
       "type": "person", 
 
       "name": "Kumar", 
 
       "relevance": "0.234", 
 
       "count": 1 
 
      } 
 
     ], 
 
     "socialtags": { 
 
      "type": "SocialTag", 
 
      "name": "US", 
 
      "importance": 2 
 
     }, 
 
     "topic": { 
 
      "type": "Topic", 
 
      "name": "US", 
 
      "score": "0.936" 
 
     } 
 
    }

Das obige Format richtig. In Bezug auf die Suche. Verwenden Sie den Index, um nach den Elementen des JSON-Arrays zu suchen. Die Abhilfe für dies kann das gesamte JSON-Objekt in anderem JSON-Objekt wird zu halten und die Indizierung es

ich vorschlagen, die gesamten Daten in einem anderen JSON-Objekt zu halten. Sie können versuchen, die folgende Weise

{ 
"data": [ 
    { 
     "id": "44444", 
     "headline": "testing US", 
     "generaltags": [ 
      { 
       "type": "person", 
       "name": "Jayalalitha", 
       "relevance": "0.334", 
       "count": 1 
      }, 
      { 
       "type": "person", 
       "name": "Kumar", 
       "relevance": "0.234", 
       "count": 1 
      } 
     ], 
     "socialtags": { 
      "type": "SocialTag", 
      "name": "US", 
      "importance": 2 
     }, 
     "topic": { 
      "type": "Topic", 
      "name": "US", 
      "score": "0.936" 
     } 
    } 
] 
} 
+0

'Fehler beim Parsen von JSON Feldwert. Unerwartete OBJECT_START bei [112], Feld = generalTags 'Fehlercode' 400' mit Ihrem Beispielcode. Irgendwelche Ideen? – Sam

+0

Das Beispiel ist das gleiche ist das gleiche wie das von @ w3lessons gepostet. –

-2

die Syntax in http://yonik.com/solr-nested-objects/ sehen von

$ curl http://localhost:8983/solr/demo/update?commitWithin=3000 -d ' 
[ 
{id : book1, type_s:book, title_t : "The Way of Kings", author_s : "Brandon Sanderson", 
    cat_s:fantasy, pubyear_i:2010, publisher_s:Tor, 
    _childDocuments_ : [ 
    { id: book1_c1, type_s:review, review_dt:"2015-01-03T14:30:00Z", 
     stars_i:5, author_s:yonik, 
     comment_t:"A great start to what looks like an epic series!" 
    } 
    , 
    { id: book1_c2, type_s:review, review_dt:"2014-03-15T12:00:00Z", 
     stars_i:3, author_s:dan, 
     comment_t:"This book was too long." 
    } 
    ] 
} 
]' 

unterstützt solr 5.3