GlideSPSearchAnalytics : Global
Die GlideSPSearchAnalytics -API bietet Methoden zum Generieren von Suchanalysen aus anwenderdefinierten ServiceNow -Such-Widgets.
Standardmäßig erfassen die Tabellen „Suchereignisse“ [sys_search_event] und „Suchquellenereignisse“ [sys_search_source_event] Suchdaten aus Such-Widgets des Basissystems. Anwenderdefinierte Such-Widgets profitieren jedoch nicht von dieser Funktion. Verwenden Sie diese API im Serverskript von anwenderdefinierten Such-Widgets in globalen Umgebungen, um Suchdaten an die Suchereignistabellen zu senden. Generieren Zeigen Sie relevante Suchvorschläge für Ihre Benutzer an und überwachen Sie Suchanalysen, um zu verstehen, was Ihre Benutzer suchen und ob sie finden, was sie benötigen.
- Gesuchte Begriffe
- Rang der angeklickten Elemente
- Filter, die zum Einschränken von Suchergebnissen verwendet werden
- Tabellennamen und Datensatzbezeichner von der ersten Seite der Suchergebnisse
- Angeklickte Suchergebnisse, einschließlich Browser und Standort
Suchvorschläge sind eine Now Platform-Funktion. Weitere Informationen finden Sie unter Suchvorschläge.
GlideSPSearchAnalytics – veröffentlichen (Zeichenfolgennutzlast)
Sendet Suchdaten an die Tabellen „Suchereignis“ [sys_search_event], „Suchereignis pro Quelle“ [sys_search_source_event] und „Suchsignalereignis“ [sys_search_signal_event] für Suchergebnisse oder an die Tabellen „Suchergebnis angeklickt“ [sys_search_result_clicked] und „Suchsignalergebnisereignis“ [sys_search_signal_result_event], wenn ein Anwender klickt auf ein Suchergebnis.
| Name | Typ | Beschreibung |
|---|---|---|
| Nutzlast | Zeichenfolge | JSON-Nutzlast im Zeichenfolgenformat, die die Suchdaten enthält, die an die Tabellen „Suchereignis“ [sys_search_event], „Suchereignis pro Quelle“ [sys_search_source_event] und „Suchsignalereignis“ [sys_search_signal_event] für Suchergebnisse oder an die Tabellen „Suchergebnis angeklickt“ [sys_search_result_clicked] und „Suche“ gesendet werden sollen Signalergebnis-Ereignistabellen [sys_search_signal_result_event], wenn ein Benutzer auf ein Suchergebnis klickt. Strukturieren Sie die Nutzlast als Schlüssel-Wert-Paare entsprechend der Art der Suchdaten, die Sie sammeln möchten.
|
| Typ | Beschreibung |
|---|---|
| Keine |
In diesem Beispiel werden Daten der Direktsuche an die Such-Analytics-Tabellen übergeben.
var searchObject = new GlideSPSearchAnalytics();
var payload = {
'query': 'how do i get a new computer',
'portal_id': '81b75d3147032100ba13a5554ee4902b',
'page_id': '87466b63c3223100c8b837659bba8feb',
'results_per_source': [{
'source_id': 'bf2c4c15b3a31300e64be12b86a8dcb7',
'number_of_results': 2,
}, {
'source_id': 'c96eb1686721220023c82e08f585efff',
'number_of_results': 1
}],
'refinement': false,
'search_results': [{
'record_id': 'KB Article 1',
'table_name': 'knowledge'
}, {
'record_id': 'KB Article 2',
'table_name': 'knowledge'
}, {
'record_id': 'Employee Help',
'table_name': 'userportal'
}]
};
var directSearchData = searchObject.publish(JSON.stringify(payload));
In diesem Beispiel werden Daten der Direktsuche dynamisch aus einem anwenderdefinierten Such-Widget erfasst und an die Such-Analytics-Tabellen übergeben.
//client script
var payload = {
query: this.data.query,
portal_id: this.data.portalID,
page_id: this.data.pageID,
results_per_source: getSearchSources(),
refinement_occurred: false,
};
var payloadObject = {
action: "TestAction",
payload: payload,
};
c.server.get(payloadObject);
//server script
if (input && input.action === "TestAction") {
input.action = "";
var textSearchAnalytics = new GlideSPSearchAnalytics().publish(JSON.stringify(input.payload));
return;
}
In diesem Beispiel werden Daten zu direkt angeklickten Suchergebnissen aus einem anwenderdefinierten Such-Widget erfasst und an die Tabelle „Suchanalysen“ [sys_search_result_clicked] übergeben.
//client script
function setUserLocationCoords(cb) {
var onSuccess = function(pos) {
return cb({
latitude: pos.coords.latitude,
longitude: pos.coords.longitude,
});
};
var onError = function() {
return cb({
latitude: null,
longitude: null,
});
};
return window.navigator.geolocation.getCurrentPosition(onSuccess, onError, {
enableHighAccuracy: true,
});
}
function trackSearchResultClicked(resultClicked, rank) {
if (!rank || rank < 1) return;
var c = $scope;
var query = _.get(c.data, "q");
var results = _.get(c.data, "results", []);
var result = results.find(function(e) {
return e.primary.trim() === resultClicked.trim();
});
var description = result.name != null ? result.name : result.primary;
var sourceTable = result.table != null ? result.table : null;
var payloadObject = {
action: "TestAction",
payload: {
query: query,
portal_id: c.portal.sys_id,
page_id: $scope.page && $scope.page.id,
results_per_source: getSearchSources(c),
refinement_occurred: false,
click_rank: rank,
browser_info: $window.navigator.userAgent,
location: {},
result_clicked_sys_id: result.sys_id,
label_description: description,
source_table: sourceTable,
},
};
setUserLocationCoords(function(coords) {
payloadObject.payload.location.latitude = coords.latitude;
payloadObject.payload.location.longitude = coords.longitude;
$window.spSearchAnalytics = {
query: query,
refinement_occurred: false,
};
c.server.get(payloadObject);
});
}
// Event delegation for Updating click rank
$(".panel").on("click", ".result-item a", function(e) {
var index = $(e.currentTarget).parent().parent().data("index");
var resultClicked = e.currentTarget.innerText;
trackSearchResultClicked(resultClicked, index + 1);
});
// server script
if (input && input.action === "TestAction") {
input.action = "";
var textSearchAnalytics = new GlideSPSearchAnalytics().publish(JSON.stringify(input.payload));
return;
}