GlideSPSearchAnalytics - Global
. GlideSPSearchAnalytics A API fornece métodos para gerar análise de pesquisa personalizada ServiceNow widgets de pesquisa.
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 desse 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 dos resultados da pesquisa
- Resultados da pesquisa clicados, incluindo navegador e local
Pesquisar sugestões é um recurso de ServiceNow AI Platform. Para obter mais informações, consulte Sugestões de pesquisa.
GlideSPSearchAnalytics - publicar (carga de cadeia de caracteres)
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_clicado] e Evento de resultado de sinal de pesquisa [sys_search_result_event] quando um usuário clica em um resultado de pesquisa.
| Nome | Tipo | Descrição |
|---|---|---|
| carga | Cadeia de caracteres | Carga JSON no formato 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 de pesquisa clicado [sys_search_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 personalizado 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 clicados nos resultados de pesquisa diretos de um widget de pesquisa personalizado 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;
}