@@ -71,6 +71,35 @@ DiscoveryUtils.prototype = {
7171 return params ;
7272 } ,
7373
74+ buildParamsForPassages : function ( me , msg , config , params ) {
75+ let passagesFound = false ;
76+
77+ // Allow the passages parameters to be passed in two ways
78+ // 1. As the API is expecting
79+ [ 'passages.fields' , 'passages.count' , 'passages.characters'
80+ ] . forEach ( function ( f ) {
81+ params = me . buildParamsFor ( msg , config , params , f ) ;
82+ passagesFound = true ;
83+ } ) ;
84+
85+ // 2. As anyone misreading the documentation might do it.
86+ if ( msg . discoveryparams && msg . discoveryparams . passages ) {
87+ passagesFound = true ;
88+ [ 'fields' , 'count' , 'characters'
89+ ] . forEach ( function ( f ) {
90+ if ( msg . discoveryparams . passages [ f ] ) {
91+ params [ 'passages.' + f ] = msg . discoveryparams . passages [ f ] ;
92+ }
93+ } ) ;
94+ }
95+
96+ if ( passagesFound ) {
97+ params . passages = true ;
98+ }
99+
100+ return params ;
101+ } ,
102+
74103 buildParamsFromConfig : function ( config , params , field ) {
75104 if ( config [ field ] ) {
76105 params [ field ] = config [ field ] ;
@@ -101,6 +130,8 @@ DiscoveryUtils.prototype = {
101130 params = me . buildParamsFor ( msg , config , params , f ) ;
102131 } ) ;
103132
133+ params = me . buildParamsForPassages ( me , msg , config , params ) ;
134+
104135 [ 'count' , 'filter' , 'aggregation' , 'return' ] . forEach ( function ( f ) {
105136 params = me . buildParamsFromConfig ( config , params , f ) ;
106137 } ) ;
0 commit comments