我已经集成了Watson Discovery
和Watson Assistant
,因此用户可以从Assistant查询Discovery文档。截至目前,我正在展示具有最高通道分数的通道。现在我想显示文档名称从哪个文档获取文章。下面是我的Node.js代码。
function main(params) {
const DiscoveryV1 = require('watson-developer-cloud/discovery/v1');
return new Promise(function (resolve, reject) {
var discovery = new DiscoveryV1({
url: 'https://gateway-lon.watsonplatform.net/discovery/api',
iam_apikey:'vvvvvvvvvv', /* watson discovery api key */
version: '2018-12-03'
});
discovery.query(
{environment_id: 'vvvvvv', /* watson discovery environment id */
collection_id: 'vvvvvvvvvv', /* watson discovery collection id */
natural_language_query: params.message,
passages: 'true'
}, function(err, data) {
if (err) {
return reject(err);
}
return resolve(data.passages[1]);
});
});
}
任何人都可以建议修改以显示文档名称吗?
@ msr_003有两种方法可以解决这个问题。提取文章的文件的document_id
在文章回复中返回。通道响应的document_id
字段映射到查询响应中返回的文档的id
字段。您可以查找文档响应的extracted_metadata.filename
字段,其中document_id
(段落)= id
(来自的文档)。令人遗憾的是,相同的领域被称为两种不同的方式。
另请注意,查询响应中返回的文档数量将影响通道来自的文档是否实际返回。例如,假设您返回5个段落,并选择返回5个文档。返回的一个或多个段落很可能来自不在返回的前5个文档中的文档。如果发生这种情况,您可以在查询响应中返回大量文档,以帮助防止这种情况发生。因此,例如,当您返回5个段落时返回前100个文档以帮助防止这种情况发生。
您可以做的另一件事是使用文档详细信息API https://cloud.ibm.com/apidocs/discovery#get-document-details来获取文档所在的文档的详细信息。虽然这需要第二次API调用并且速度较慢,但它消除了在原始查询结果中未返回文档的可能性。