我在我的 bluemix 帐户上创建了一项发现服务。我想从 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
所以我在 Github 上更仔细地查看了 IBM 的示例,现在参数的格式是这样的:
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
一个,所有文档都会作为结果发回(这是可以理解的),但我没有聚合部分,所以我无法访问我的文档中的专有名称列表。