获取IBM Discovery的文档名称

问题描述 投票:1回答:1

我已经集成了Watson DiscoveryWatson 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]);
      }); 
  });
}

任何人都可以建议修改以显示文档名称吗?

ibm-watson watson-conversation watson-discovery
1个回答
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调用并且速度较慢,但​​它消除了在原始查询结果中未返回文档的可能性。

© www.soinside.com 2019 - 2024. All rights reserved.