Reputation: 379
i try to create a new document for the IBM Watson Discovery Service and I use the watson-developer-cloud/node-sdk
The content in the document should come from a string and not from a file. I tried like this but with no luck
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)
}
});
this creates a document but with no content. This is how the result looks like
{
"id": "MYID",
"score": 1,
"metadata": {
"Content-Type": "application/json"
},
"enriched_field_units": 0
}
Is there something simple i miss?
Upvotes: 0
Views: 941
Reputation: 8166
I know this is an old question, but I wanted to provide an update now that a couple of additional bugs have been fixed and a new addJsonDocument()
method was added in v2.34.0.
The first thing to point out is that Discovery ignores the metadata object when determining content type. It looks at the filename and the file contents only.
text/plain
is not supported, so with your exact example, it returns a correct identification and error message.
However if you substituted valid JSON there, it may still mis-identify it as text without an appropriate filename.
Setting a .json filename or using the new addJsonDocument()
method would resolve the issue:
To set the filename, set file
to an object with value
and options.filename
fields:
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));
}
});
Or, for JSON, use 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));
}
});
Upvotes: 3
Reputation: 6641
You didn't miss anything. There is a bug in the SDK that's being worked on right now. It should be fixed soon. https://github.com/watson-developer-cloud/node-sdk/issues/369
Upvotes: 4