微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Watson discovery 中进行了查询,尝试通过 nodejs sdk 进行复制,但段落数组为空

如何解决在 Watson discovery 中进行了查询,尝试通过 nodejs sdk 进行复制,但段落数组为空

在构建查询页面中进行简单的自然语言查询后,将“包含相关段落”的选项设置为“是”。我得到了 5 个段落和结果。一切都很好。当我从 npm ibm-watson 6 nodejs sdk 尝试时。我得到了结果,但是一个空的段落数组具有相同的自然语言文本。

这是查询页面显示选项的 url,我尝试了所有选项

https://api.us-east.discovery.watson.cloud.ibm.com/instances/d45df72b-93e4-4897-b9ac-98dc1e088afc/v1/environments/xx/collections/xx/query?version=2018-12-03&deduplicate=false&highlight=true&passages=true&passages.count=5&natural_language_query=what%20is%20autism

这是查询构建器页面的答案

enter image description here

这是代码示例,

var discovery = new watson_discovery_v1({
  authenticator : new IamAuthenticator({apikey: msg.startup.discovery_password}),serviceUrl : msg.startup.discovery_endpoint,version: '2020-09-22'
});

msg.WDSParams = {
    environmentId: "x",collectionId: "x",passages: true,count:5,natural_language_query: msg.params.input.text
}



discovery.query(msg.WDSParams)
  .then(results => {
      msg.WDSResults = results; //your query results
      node.send(msg);
  })
  .catch(err => {
    console.log('error:',err);
  });

这是发现调用返回的json

enter image description here

我已经尝试了所有的段落选项,复制了查询构建器使用的确切选项。返回相同的结果,但没有段落。有人有想法吗?顺便说一句,使用 Lite 计划,直到我可以证明段落有效。

解决方法

问题与我调用查询方法的方式有关。下面的代码解决了这个问题。此代码用于 nodeRed 函数节点。

const watson_discovery_v1 = global.get('watson_discovery_v1');
const { IamAuthenticator } = global.get('ibm_auth');

const discovery = new watson_discovery_v1({
  authenticator : new IamAuthenticator({apikey: 
  msg.startup.discovery_password}),serviceUrl : msg.startup.discovery_endpoint,version: '2019-04-30'
});

  
async function run() {
 try {
    const result = await discovery.query({
        environmentId: 'x',collectionId: 'x',passages: true,passagesCount: 2,count: 5,naturalLanguageQuery: msg.params.input.text
        })

    msg.WDSResults = result
    clearTimeout(myTM)
 }
 catch(e){
    node.error(e)
 }
   node.send(msg);
}
run()

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。