Forward X-Search-ID header to search suggest tracking
authorErik Bernhardson <ebernhardson@wikimedia.org>
Tue, 25 Sep 2018 16:34:28 +0000 (09:34 -0700)
committerErik Bernhardson <ebernhardson@wikimedia.org>
Tue, 25 Sep 2018 19:36:58 +0000 (12:36 -0700)
This header can be injected into api responses that include
search results to provide a link between the backend logs
and any frontend logging. Associating autocomplete tracking
with backend logs will allow us to determine autocomplete
examination probabilities, and more generally be able to
evaluate autocomplete effectiveness.

Bug: T205348
Change-Id: I1663906e2fd71f7df215e563b09a0b4fb8948ab8

resources/src/mediawiki.searchSuggest/searchSuggest.js
resources/src/mediawiki.widgets/mw.widgets.SearchInputWidget.js

index bd94f29..f38ec06 100644 (file)
@@ -22,6 +22,7 @@
                        } ).done( function ( data, jqXHR ) {
                                response( data[ 1 ], {
                                        type: jqXHR.getResponseHeader( 'X-OpenSearch-Type' ),
+                                       searchId: jqXHR.getResponseHeader( 'X-Search-ID' ),
                                        query: query
                                } );
                        } );
                                action: 'impression-results',
                                numberOfResults: context.config.suggestions.length,
                                resultSetType: metadata.type || 'unknown',
+                               searchId: metadata.searchId || null,
                                query: metadata.query,
                                inputLocation: getInputLocation( context )
                        } );
index 75bf891..0d0fa86 100644 (file)
                // tracking purposes
                promise.done( function ( data, jqXHR ) {
                        self.requestType = jqXHR.getResponseHeader( 'X-OpenSearch-Type' );
+                       self.searchId = jqXHR.getResponseHeader( 'X-Search-ID' );
                } );
 
                return promise;
                        data: response || {},
                        metadata: {
                                type: this.requestType || 'unknown',
+                               searchId: this.searchId || null,
                                query: this.getQueryValue()
                        }
                };
                this.requestType = undefined;
+               this.searchId = undefined;
 
                return resp;
        };
                        action: 'impression-results',
                        numberOfResults: items.length,
                        resultSetType: data.metadata.type,
+                       searchId: data.metadata.searchId,
                        query: data.metadata.query,
                        inputLocation: this.dataLocation || 'header'
                } );