我在我的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
,那么所有文档都会作为结果发回(这是可以理解的),但我没有聚合部分,因此我无法访问文档中的正确名称列表。
答案 0 :(得分:0)
您的查询看起来不正确。我将使用query
,然后您需要构建查询搜索,例如text:"CHLOE RICHARDS"
如果要执行自然语言查询,则应设置参数natural_language_query
。