GlideSPSearchAnalytics - Global
A API GlideSPSearchAnalytics fornece métodos para gerar análises de pesquisa a partir de widgets de pesquisa ServiceNow personalizados.
Por padrão, as tabelas Eventos de pesquisa [sys_search_event] e Eventos de origem de pesquisa [sys_search_source_event] coletam dados de pesquisa de widgets de pesquisa do sistema de base. No entanto, os widgets de pesquisa personalizados não se beneficiam deste recurso. Use esta API no script do servidor de widgets de pesquisa personalizados em ambientes globais para enviar dados de pesquisa para as tabelas de eventos de pesquisa. Gerar sugestões de pesquisa relevantes para os usuários e a análise de pesquisa do monitor para entender o que os usuários estão pesquisando e se eles têm encontrado o que precisam.
- Termos pesquisados
- Classificação de itens clicados
- Filtros usados para refinar os resultados da pesquisa
- Nomes de tabela e identificadores de registro da primeira página de resultados de pesquisa
- Resultados de pesquisa clicados, incluindo navegador e local
Pesquisar sugestões é um recurso de Now Platform. Para obter mais informações, consulte Sugestões de pesquisa.
GlideSPSearchAnalytics - publicar (cadeia de caracteres de carga)
Envia dados de pesquisa para as tabelas Evento de pesquisa [sys_search_event], Evento de pesquisa por origem [sys_search_source_event] e Evento de sinal de pesquisa [sys_search_signal_event] para resultados de pesquisa ou para as tabelas Resultado de pesquisa clicado [sys_search_result_clicked] e Evento de resultado de sinal de pesquisa [sys_search_signal_result_event] quando um usuário clica em um resultado de pesquisa.
| Nome | Tipo | Descrição |
|---|---|---|
| carga | Cadeia de caracteres | Carga JSON no formato de cadeia de caracteres que contém os dados de pesquisa a serem enviados para as tabelas Evento de pesquisa [sys_search_event], Evento de pesquisa por origem [sys_search_source_event] e Evento de sinal de pesquisa [sys_search_signal_event] para resultados de pesquisa ou para as tabelas Resultado da pesquisa clicado [sys_search_result_clicked] e Pesquisa Tabelas de evento de resultado de sinal [sys_search_signal_result_event] quando um usuário clica em um resultado de pesquisa. Estruture a carga como pares de chave-valor de acordo com o tipo de dados de pesquisa que você deseja coletar.
|
| Tipo | Descrição |
|---|---|
| Nenhum(a) |
Este exemplo passa dados de pesquisa direta para as tabelas de análise de pesquisa.
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));
Este exemplo coleta dinamicamente dados de pesquisa direta de um widget de pesquisa personalizada e os passa para as tabelas de análise de pesquisa.
//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;
}
Este exemplo coleta dados diretos de resultados de pesquisa clicados de um widget de pesquisa personalizada e os passa para a tabela de análise de pesquisa [sys_search_result_clicked].
//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;
}