IBM Bluemix Discovery - 查询参数

时间:2017-06-28 15:29:54

标签: node.js ibm-cloud watson-discovery

我在我的bluemix帐户上创建了一个Discovery服务。我想从nodejs应用程序查询我的文档。

我已经使用一些聚合构建了一个查询,使用bluemix在线工具测试它并且它运行良好。

现在,当我从我的代码中查询集合时,无论我的参数是什么,我总是会收到所有带有丰富文本的文档,依此类推。我想我错过了如何将查询属性发送到服务(如过滤器和聚合)。

这是我的代码:

var queryParams = {
  query:'CHLOE RICHARDS',
  return:'title',
  count:1,
  aggregations:'nested(enriched_text.entities).filter(enriched_text.entities.type:Person).term(enriched_text.entities.text, count:5)'
};

discovery.query({environment_id:that.environment_id, collection_id:that.collection_id, query_options:queryParams }, function(error, data) {
  if(error){
    console.error(error);
    reject(error);
  }
  else{
    console.log(JSON.stringify(data, null, 2));
    resolve(data.matching_results);
  }
});

结果总是:

{
  "matching_results": 28,
  "results": [
    {
      "id": "fe5e2a38e6cccfbd97dbdd0c33c9c8fd",
      "score": 1,
      "extracted_metadata": {
        "publicationdate": "2016-01-05",
        "sha1": "28434b0a7e2a94dd62cabe9b5a82e98766584dd412",
        "author": "Richardson, Heather S",
        "filename": "whatever.docx",
        "file_type": "word",
        "title": "no title"
      },
      "text": "......

独立于query_option参数的值。你能救我吗?

修改

我使用query_options:queryParams而不是query:"text:CHLOE RICHARDS",而且效果很好。现在我的问题仍然是找到正确的参数格式来添加我想要的聚合

编辑2

所以我更仔细地研究了IBM's example on Github,参数现在的格式如下:

const queryParams = {
  count: 5,
  return: 'title,enrichedTitle.text',
  query: '"CHLOE RICHARDS"',
  aggregations: [ 'nested(enriched_text.entities).filter(enriched_text.entities.type:Person).term(enriched_text.entities.text, count:5)' ],
  environment_id: '1111111111',
  collection_id: '11111111111'
};

如果我只使用查询属性,它会很好用。现在,如果我只使用aggregations,那么所有文档都会作为结果发回(这是可以理解的),但我没有聚合部分,因此我无法访问文档中的正确名称列表。

1 个答案:

答案 0 :(得分:0)

您的查询看起来不正确。我将使用query,然后您需要构建查询搜索,例如text:"CHLOE RICHARDS"

如果要执行自然语言查询,则应设置参数natural_language_query