在 Watson 发现中进行了查询,尝试通过 nodejs sdk 进行复制,但 passages 数组为空
Made a query in Watson discovery, tried to duplicate via nodejs sdk and the passages array is empty
在构建查询页面中进行简单的自然语言查询后,将“包含相关段落”的选项设置为“是”。我得到了 5 个段落和结果。一切正常。当我从 npm ibm-watson 6 nodejs 尝试时sdk。我得到了结果,但是一个空的段落数组具有相同的自然语言文本。
这是查询页面中的 url 选项,我尝试了所有这些选项
这是来自查询构建器页面的答案
这是代码示例,
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
我已经尝试了所有的段落选项,复制了查询构建器使用的确切选项。返回相同的结果,但没有段落。有人有想法吗?顺便说一句,在我证明段落有效之前,请使用 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()
在构建查询页面中进行简单的自然语言查询后,将“包含相关段落”的选项设置为“是”。我得到了 5 个段落和结果。一切正常。当我从 npm ibm-watson 6 nodejs 尝试时sdk。我得到了结果,但是一个空的段落数组具有相同的自然语言文本。
这是查询页面中的 url 选项,我尝试了所有这些选项
这是来自查询构建器页面的答案
这是代码示例,
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
我已经尝试了所有的段落选项,复制了查询构建器使用的确切选项。返回相同的结果,但没有段落。有人有想法吗?顺便说一句,在我证明段落有效之前,请使用 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()