Skip to content

Commit 8d25b65

Browse files
authored
Merge pull request #304 from chughts/disquery
NLP Query in Discovery
2 parents bb00fcd + 32f108c commit 8d25b65

File tree

7 files changed

+159
-53
lines changed

7 files changed

+159
-53
lines changed

README.md

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,9 @@ Node-RED Watson Nodes for IBM Bluemix
77

88
<a href="https://cla-assistant.io/watson-developer-cloud/node-red-node-watson"><img src="https://cla-assistant.io/readme/badge/watson-developer-cloud/node-red-node-watson" alt="CLA assistant" /></a>
99

10+
### New in version 0.5.11
11+
- Add support for NLP Query in Discovery and Discovery Query Builder Nodes.
12+
1013
### New in version 0.5.10
1114
- Allowed detect_mode for Visual Recognition node to be set in msg.params
1215

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "node-red-node-watson",
3-
"version": "0.5.10",
3+
"version": "0.5.11",
44
"description": "A collection of Node-RED nodes for IBM Watson services",
55
"dependencies": {
66
"alchemy-api": "^1.3.0",

services/conversation/v1.html

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -99,7 +99,6 @@
9999
</ul>
100100
</script>
101101

102-
103102
<script type="text/javascript">
104103
var oneditprepare = function() {
105104
$('input#node-input-context').change(function () {

services/discovery/discovery-utils.js

Lines changed: 40 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,21 @@ DiscoveryUtils.prototype = {
3434
return params;
3535
},
3636

37+
buildParamsForQuery: function(msg, config, params) {
38+
var sourceField = 'query',
39+
targetField = 'query';
40+
41+
if (config.nlp_query || msg.discoveryparams.nlp_query) {
42+
targetField = 'natural_language_query';
43+
}
44+
if (msg.discoveryparams && msg.discoveryparams[sourceField]) {
45+
params[targetField] = msg.discoveryparams[sourceField];
46+
} else if (config[sourceField]) {
47+
params[targetField] = config[sourceField];
48+
}
49+
return params;
50+
},
51+
3752
buildParamsForPayload: function(msg, config, params) {
3853
var isJSON = this.isJsonString(msg.payload) ||
3954
this.isJsonObject(msg.payload);
@@ -67,11 +82,12 @@ DiscoveryUtils.prototype = {
6782
var params = {},
6883
me = this;
6984

70-
params = this.buildParamsForName(msg, config, params);
85+
params = me.buildParamsForName(msg, config, params);
86+
params = me.buildParamsForQuery(msg, config, params);
7187

7288
['environment_id', 'collection_id', 'configuration_id',
7389
'collection_name',
74-
'query', 'passages', 'description', 'size'
90+
'passages', 'description', 'size'
7591
].forEach(function(f) {
7692
params = me.buildParamsFor(msg, config, params, f);
7793
});
@@ -93,6 +109,27 @@ DiscoveryUtils.prototype = {
93109
if (config.collection) {
94110
params.collection_id = config.collection;
95111
}
112+
113+
if (config.passages) {
114+
params.passages = config.passages;
115+
}
116+
117+
params = this.buildMsgQueryOverrides(msg, config, params);
118+
119+
return params;
120+
},
121+
122+
buildMsgQueryOverrides: function(msg, config, params) {
123+
if (config.nlp_query) {
124+
params.query = config.querynlp;
125+
params.nlp_query = config.nlp_query;
126+
} else {
127+
params = this.buildStructuredQuery(msg, config, params);
128+
}
129+
return params;
130+
},
131+
132+
buildStructuredQuery: function(msg, config, params) {
96133
if (config.query1 && config.queryvalue1) {
97134
params.query = config.query1 + ':"' + config.queryvalue1 + '"';
98135
}
@@ -108,13 +145,10 @@ DiscoveryUtils.prototype = {
108145
}
109146
params.query += config.query3 + ':"' + config.queryvalue3 + '"';
110147
}
111-
if (config.passages) {
112-
params.passages = config.passages;
113-
}
114-
115148
return params;
116149
},
117150

151+
118152
paramEnvCheck: function(params) {
119153
var response = '';
120154
if (!params.environment_id) {

services/discovery/v1-query-builder.html

Lines changed: 80 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,32 @@
6767
<input type="hidden" id="node-input-collectionhidden"/>
6868
</div>
6969

70+
<div class="form-row">
71+
<label>&nbsp;</label>
72+
<input type="checkbox" id="node-input-passages" style="display: inline-block; width: auto; vertical-align: top;">
73+
<label for="node-input-passages" style="width: 70%;"> Passages</label>
74+
</div>
75+
<div>
76+
<input type="hidden" id="node-input-passageshidden"/>
77+
</div>
78+
79+
<div class="form-row">
80+
<label>&nbsp;</label>
81+
<input type="checkbox" id="node-input-nlp_query" style="display: inline-block; width: auto; vertical-align: top;">
82+
<label for="node-input-nlp_query" style="width: 70%;"> Query in Plain Language</label>
83+
</div>
84+
<div>
85+
<input type="hidden" id="node-input-nlp_queryhidden"/>
86+
</div>
87+
88+
<div class="form-row">
89+
<label for="node-input-querynlp"><i class="fa fa-book"></i> NLP Query </label>
90+
<input type="text" id="node-input-querynlp" placeholder="">
91+
</div>
92+
<div>
93+
<input type="hidden" id="node-input-querynlphidden"/>
94+
</div>
95+
7096
<div class="form-row">
7197
<label for="node-input-query1"><i class="fa fa-book"></i> Query Key 1</label>
7298
<select type="text" id="node-input-query1" style="display: inline-block; vertical-align:middle; width: 70%;">
@@ -100,15 +126,6 @@
100126
<input type="hidden" id="node-input-queryvalue3hidden"/>
101127
</div>
102128

103-
<div class="form-row">
104-
<label>&nbsp;</label>
105-
<input type="checkbox" id="node-input-passages" style="display: inline-block; width: auto; vertical-align: top;">
106-
<label for="node-input-passages" style="width: 70%;"> Passages</label>
107-
</div>
108-
<div>
109-
<input type="hidden" id="node-input-passageshidden"/>
110-
</div>
111-
112129
</script>
113130

114131
<script type="text/x-red" data-help-name="watson-discovery-v1-query-builder">
@@ -150,14 +167,17 @@
150167
disQB.query2_selected = $('#node-input-query2hidden').val();
151168
disQB.query3_selected = $('#node-input-query3hidden').val();
152169
disQB.passages_selected = $('#node-input-passageshidden').val();
170+
disQB.nlp_query_selected = $('#node-input-nlp_queryhidden').val();
153171

154172
// Nothing is to be shown unless the values to show in the listCollections
155173
// can be obtained from the service.
156174
disQB.hideAll = function() {
157175
$('#credentials-not-found').show();
176+
cv1wm.hideSelectedFields(fields);
158177
$('#something-went-wrong').hide();
159178
$('#node-input-environment').parent().hide();
160179
$('#node-input-collection').parent().hide();
180+
$('#node-input-querynlp').parent().hide();
161181
$('#node-input-query1').parent().hide();
162182
$('#node-input-query2').parent().hide();
163183
$('#node-input-query3').parent().hide();
@@ -169,6 +189,12 @@
169189
}
170190
}
171191

192+
disQB.hideSelectedFields = function(fields) {
193+
for (i = 0; i < fields.length; i++) {
194+
$(fields[i]).parent().hide();
195+
}
196+
}
197+
172198
// Set up listeners for the select lists to determine if the subsequent
173199
// list boxes need refreshing. ie. A change in selected Envionment, needs
174200
// the collection list to be revised. A change in selected collection, needs
@@ -216,6 +242,21 @@
216242
disQB.query3_selected = $('#node-input-query3').val();
217243
});
218244

245+
$('input#node-input-nlp_query').change(function () {
246+
var checked = $('input#node-input-nlp_query').prop('checked');
247+
if (checked) {
248+
$('#node-input-querynlp').parent().show();
249+
$('#node-input-query1').parent().hide();
250+
$('#node-input-query2').parent().hide();
251+
$('#node-input-query3').parent().hide();
252+
} else {
253+
$('#node-input-querynlp').parent().hide();
254+
$('#node-input-query1').parent().show();
255+
$('#node-input-query2').parent().show();
256+
$('#node-input-query3').parent().show();
257+
}
258+
});
259+
219260
}
220261

221262
// The dialog is about to be shown.
@@ -372,9 +413,12 @@
372413
// three query switch lists can be shown.
373414
disQB.showSchemas = function () {
374415
if (disQB.schemas && disQB.schemaCheck()) {
375-
$('select#node-input-query1').parent().show();
376-
$('select#node-input-query2').parent().show();
377-
$('select#node-input-query3').parent().show();
416+
var checked = $('input#node-input-nlp_query').prop('checked');
417+
if (!checked) {
418+
$('select#node-input-query1').parent().show();
419+
$('select#node-input-query2').parent().show();
420+
$('select#node-input-query3').parent().show();
421+
}
378422
disQB.populateSchemas();
379423
}
380424
}
@@ -497,32 +541,37 @@
497541
// they can be restored.
498542
disQB.restoreHidden = function () {
499543
disQB.environment_selected = $('#node-input-environmenthidden').val();
500-
$('select#node-input-environment').val(disQB.environment_selected);
544+
$('#node-input-environment').val(disQB.environment_selected);
501545

502546
disQB.collection_selected = $('#node-input-collectionhidden').val();
503-
$('select#node-input-collection').val(disQB.collection_selected);
547+
$('#node-input-collection').val(disQB.collection_selected);
548+
549+
disQB.querynlp_selected = $('#node-input-querynlphidden').val();
550+
$('#node-input-querynlp').val(disQB.querynlp_selected);
504551

505552
disQB.query1_selected = $('#node-input-query1hidden').val();
506-
$('select#node-input-query1').val(disQB.query1_selected);
553+
$('#node-input-query1').val(disQB.query1_selected);
507554

508555
disQB.queryvalue1_selected = $('#node-input-queryvalue1hidden').val();
509-
$('select#node-input-queryvalue1').val(disQB.queryvalue1_selected);
556+
$('#node-input-queryvalue1').val(disQB.queryvalue1_selected);
510557

511558
disQB.query2_selected = $('#node-input-query2hidden').val();
512-
$('select#node-input-query2').val(disQB.query2_selected);
559+
$('#node-input-query2').val(disQB.query2_selected);
513560

514561
disQB.queryvalue2_selected = $('#node-input-queryvalue2hidden').val();
515-
$('select#node-input-queryvalue2').val(disQB.queryvalue2_selected);
562+
$('#node-input-queryvalue2').val(disQB.queryvalue2_selected);
516563

517564
disQB.query3_selected = $('#node-input-query3hidden').val();
518-
$('select#node-input-query3').val(disQB.query3_selected);
565+
$('#node-input-query3').val(disQB.query3_selected);
519566

520567
disQB.queryvalue3_selected = $('#node-input-queryvalue3hidden').val();
521-
$('select#node-input-queryvalue3').val(disQB.queryvalue3_selected);
568+
$('#node-input-queryvalue3').val(disQB.queryvalue3_selected);
522569

523570
disQB.passages_selected = $('#node-input-passageshidden').val();
524-
$('inpu#node-input-passages').val(disQB.passages_selected);
571+
$('#node-input-passages').val(disQB.passages_selected);
525572

573+
disQB.nlp_query_selected = $('#node-input-nlp_queryhidden').val();
574+
$('#node-input-nlp_query').val(disQB.nlp_query_selected);
526575
}
527576

528577

@@ -579,6 +628,9 @@
579628
disQB.collection_selected = $('#node-input-collection').val();
580629
$('#node-input-collectionhidden').val(disQB.collection_selected);
581630

631+
disQB.querynlp_selected = $('#node-input-querynlp').val();
632+
$('#node-input-querynlphidden').val(disQB.querynlp_selected);
633+
582634
disQB.query1_selected = $('#node-input-query1').val();
583635
$('#node-input-query1hidden').val(disQB.query1_selected);
584636

@@ -599,6 +651,9 @@
599651

600652
disQB.passages_selected = $('#node-input-passages').val();
601653
$('#node-input-passageshidden').val(disQB.passages_selected);
654+
655+
disQB.nlp_query_selected = $('#node-input-nlp_query').val();
656+
$('#node-input-nlp_queryhidden').val(disQB.nlp_query_selected);
602657
}
603658

604659
(function() {
@@ -611,6 +666,10 @@
611666
environmenthidden: {value: ''},
612667
collection: {value: ''},
613668
collectionhidden: {value: ''},
669+
nlp_query: {value: 'true'},
670+
nlp_queryhidden: {value: 'true'},
671+
querynlp: {value: ''},
672+
querynlphidden: {value: ''},
614673
query1: {value: ''},
615674
query1hidden: {value: ''},
616675
queryvalue1: {value: ''},

0 commit comments

Comments
 (0)