使用 Watson Developer Cloud Node SDK 在 IBM Watson Discovery Service 中创建新文档
Create new document in IBM Watson Discovery Service with Watson Developer Cloud Node SDK
我尝试为 IBM Watson Discovery 服务创建一个新文档,我使用 watson-developer-cloud/node-sdk
文档中的内容应来自字符串而不是文件。我试过这样但没有运气
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)
}
});
这会创建一个文档,但没有内容。
结果是这样的
{
"id": "MYID",
"score": 1,
"metadata": {
"Content-Type": "application/json"
},
"enriched_field_units": 0
}
有什么简单的我想念的吗?
你没有遗漏任何东西。目前正在处理的 SDK 中存在一个错误。它应该很快被修复。 https://github.com/watson-developer-cloud/node-sdk/issues/369
我知道这是一个老问题,但我想提供一个更新,因为一些额外的错误已经修复,并且在 v2.34.0 中添加了一个新的 addJsonDocument()
方法。
首先要指出的是,Discovery 在确定内容类型时会忽略元数据对象。它只查看文件名和文件内容。
text/plain
不受支持,因此对于您的确切示例,它 returns 是正确的标识和错误消息。
但是,如果您在此处替换为 valid JSON,它仍可能会将其误识别为没有适当文件名的文本。
设置 .json 文件名或使用新的 addJsonDocument()
方法可以解决问题:
要设置文件名,请将 file
设置为具有 value
和 options.filename
字段的对象:
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));
}
});
或者,对于 JSON,使用 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));
}
});
我尝试为 IBM Watson Discovery 服务创建一个新文档,我使用 watson-developer-cloud/node-sdk
文档中的内容应来自字符串而不是文件。我试过这样但没有运气
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)
}
});
这会创建一个文档,但没有内容。 结果是这样的
{
"id": "MYID",
"score": 1,
"metadata": {
"Content-Type": "application/json"
},
"enriched_field_units": 0
}
有什么简单的我想念的吗?
你没有遗漏任何东西。目前正在处理的 SDK 中存在一个错误。它应该很快被修复。 https://github.com/watson-developer-cloud/node-sdk/issues/369
我知道这是一个老问题,但我想提供一个更新,因为一些额外的错误已经修复,并且在 v2.34.0 中添加了一个新的 addJsonDocument()
方法。
首先要指出的是,Discovery 在确定内容类型时会忽略元数据对象。它只查看文件名和文件内容。
text/plain
不受支持,因此对于您的确切示例,它 returns 是正确的标识和错误消息。
但是,如果您在此处替换为 valid JSON,它仍可能会将其误识别为没有适当文件名的文本。
设置 .json 文件名或使用新的 addJsonDocument()
方法可以解决问题:
要设置文件名,请将
file
设置为具有value
和options.filename
字段的对象: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)); } });
或者,对于 JSON,使用 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)); } });