GlideSPSearchAnalytics – Global
Die GlideSPSearchAnalytics Die API bietet Methoden zum Generieren von Such-Analytics aus anwenderdefinierten ServiceNow Durchsuchen Sie 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 Verfeinern der Suchergebnisse verwendet werden
- Tabellennamen und Datensatzbezeichner auf der ersten Seite der Suchergebnisse
- Angeklickte Suchergebnisse, einschließlich Browser und Standort
Suchvorschläge sind eine ServiceNow AI Platform-Funktion. Weitere Informationen finden Sie unter Vorschläge Durchsuchen .
GlideSPSearchAnalytics – veröffentlichen (Zeichenfolgennutzlast)
Sendet Suchdaten an die Tabellen „Suchereignis“ [sys_search_event], „Suchereignis pro Quelle“ [sys_search_Source_event] und „Suchereignis“ [sys_search_Signal_event] für Suchergebnisse oder an die Tabellen „Suchergebnis“ [sys_search_result_clicked] und „Suchergebnis-Ereignis“ [sys_search_Signal_result_event], wenn ein Anwender auf ein Suchergebnis klickt.
| 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 gesendet werden sollen, oder an die Tabellen „Suchergebnis“ [sys_search_result_event], wenn ein Anwender auf ein Suchergebnis klickt. Strukturieren Sie die Nutzlast als Schlüssel-Wert-Paare entsprechend dem Typ der Suchdaten, die Sie erfassen möchten.
|
| Typ | Beschreibung |
|---|---|
| Keine |
In diesem Beispiel werden direkte Suchdaten 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 direkten Suche 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, auf die direkte Suchergebnisse geklickt wurden, aus einem anwenderdefinierten Such-Widget erfasst und an die Such-Analytics-Tabelle [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;
}