2017-01-04 5 views
0

ich versuche, ein neues Dokument für den IBM Watson Discovery Service zu erstellen, und ich verwende den Watson-Entwickler-Cloud/node-sdkmit Watson Entwicklern Cloud-Knoten SDK

Der Inhalt in Das Dokument sollte aus einer Zeichenfolge und nicht aus einer Datei stammen. Ich versuchte es so, aber ohne Glück

discovery.addDocument({ 
    environment_id: MYENVID, 
    collection_id: MYCOLID, 
    metadata:'{"Content-Type":"application/json"}', 
    file:Buffer.from("HERE IS MY TEXT", 'utf8') 
}, function(err, data) { 
    if (err) { 
     return next(err); 
    } else { 
     return res.json(data) 
    } 
}); 

dies erstellt ein Dokument, aber ohne Inhalt. Dies ist, wie das Ergebnis wie

{ 
    "id": "MYID", 
    "score": 1, 
    "metadata": { 
     "Content-Type": "application/json" 
    }, 
    "enriched_field_units": 0 
} 

sieht Gibt es etwas, einfach ich vermisse?

Antwort

3

Ich weiß, dies ist eine alte Frage, aber ich wollte jetzt ein Update zur Verfügung stellen, dass ein paar zusätzliche Fehler behoben wurden und eine neue addJsonDocument() Methode in v2.34.0 hinzugefügt wurde.

Zunächst muss darauf hingewiesen werden, dass Discovery das Metadatenobjekt bei der Bestimmung des Inhaltstyps ignoriert. Es schaut nur auf den Dateinamen und den Dateiinhalt.

text/plain wird nicht unterstützt. In Ihrem exakten Beispiel wird eine korrekte Identifikations- und Fehlermeldung zurückgegeben.

Wenn Sie jedoch gültiges JSON dort ersetzt haben, kann es immer noch falsch als Text ohne einen geeigneten Dateinamen identifizieren.

Festlegen eines .json Dateinamen oder die neue addJsonDocument() Methode würde das Problem beheben:

  • den Dateinamen einzustellen, stellen file auf ein Objekt mit value und options.filename Felder:

    discovery.addDocument({ 
        environment_id: 'env-id-here', 
        collection_id: 'coll-id-here', 
        configuration_id: 'config-id-here', 
        file: { 
         value: Buffer.from("JSON goes here", 'utf8'), 
         options: { 
         filename: 'whatever.json' 
         } 
        } 
    }, function(err, data) { 
        if (err) { 
         console.error(err); 
        } else { 
         console.log(JSON.stringify(data, null, 2)); 
        } 
    }); 
    
  • Oder, für JSON, verwenden Sie addJsonDocument():

    var document_obj = { 
        environment_id: environment, 
        collection_id: collection, 
        file: {"foo": "bar"} 
    }; 
    
    discovery.addJsonDocument(document_obj, function (err, response) { 
        if (err) { 
        console.error(err); 
        } else { 
        console.log(JSON.stringify(response, null, 2)); 
        } 
    }); 
    
+0

danke für dieses Update – Pudelduscher

Verwandte Themen