GlideSPSearchAnalytics - Global

  • Versão de lançamento: Xanadu
  • Atualizado 1 de ago. de 2024
  • 7 min. de leitura
  • 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.

    Esta API coleta os seguintes dados de pesquisa:
    • 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.

    Tabela 1. Parâmetros
    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.
    • Colete dados quando o usuário pesquisar um termo:
      • consulta: cadeia de caracteres. A consulta que está sendo pesquisada.
      • portal_id: cadeia de caracteres. Sys_id do registro do portal da tabela Portais de serviço [sp_portal].
      • page_id: cadeia de caracteres. Sys_id do registro de página da tabela Páginas [sp_page].
      • resultados_per_source: matriz. Número de resultados retornados de cada origem de pesquisa.
        • source_id: cadeia de caracteres. Sys_id do registro de origem de pesquisa da tabela Origens de pesquisa [sp_search_source].
        • number_of_results: número. Número de resultados retornados da consulta para a origem de pesquisa específica.
      • ais_profile: cadeia de caracteres. Sys_id do perfil de pesquisa aplicado à pesquisa. Aplicável apenas a pesquisas feitas com o mecanismo Pesquisa com IA.
      • search_results: matriz. Resultados retornados na primeira página de resultados de pesquisa.
        • record_id: cadeia de caracteres. Sys_id do registro do resultado da pesquisa.
        • table_name: cadeia de caracteres. Nome da tabela na qual o registro do resultado da pesquisa foi encontrado.
      • refinement_occurred: booliano. Verdadeiro se o usuário filtrou os resultados da pesquisa; caso contrário, falso.
    • Colete dados quando um usuário refina os resultados da pesquisa:
      • consulta: cadeia de caracteres. A consulta que está sendo pesquisada.
      • portal_id: cadeia de caracteres. Sys_id do registro do portal da tabela Portais de serviço [sp_portal].
      • page_id: cadeia de caracteres. Sys_id do registro de página da tabela Páginas [sp_page].
      • refinement_occurred: booliano. Verdadeiro se o usuário filtrou os resultados da pesquisa; caso contrário, falso.
    • Colete a classificação do resultado da pesquisa que o usuário selecionou.
      • consulta: cadeia de caracteres. A consulta que está sendo pesquisada.
      • portal_id: cadeia de caracteres. Sys_id do registro do portal da tabela Portais de serviço [sp_portal].
      • click_rank: número. Classificação do item selecionado pelo usuário. Por exemplo, se o usuário clicou no terceiro item em uma lista de resultados de pesquisa, o valor será 3.
    • Colete informações sobre o resultado da pesquisa em que o usuário clica. Logs de dados na tabela Resultado da pesquisa clicado [sys_search_result_clicked].
      • consulta: cadeia de caracteres. A consulta que está sendo pesquisada.
      • portal_id: cadeia de caracteres. Sys_id do registro do portal da tabela Portais de serviço [sp_portal].
      • page_id: cadeia de caracteres. Sys_id do registro de página da tabela Páginas [sp_page].
      • resultados_per_source: matriz. Número de resultados retornados de cada origem de pesquisa.
        • source_id: cadeia de caracteres. Sys_id do registro de origem de pesquisa da tabela Origens de pesquisa [sp_search_source].
        • number_of_results: número. Número de resultados retornados da consulta para a origem de pesquisa específica.
      • refinement_occurred: booliano. Verdadeiro se o usuário filtrou os resultados da pesquisa; caso contrário, falso.
      • click_rank: número. Classificação do item selecionado pelo usuário. Por exemplo, se o usuário clicou no terceiro item em uma lista de resultados de pesquisa, o valor será 3.
      • browser_info: cadeia de caracteres. Registra em log o nome, a versão e a plataforma do navegador.
      • local: flutuante. Registra em log as coordenadas de latitude e longitude da localização do usuário.
      • result_clicked_sys_id: cadeia de caracteres. Sys_id do resultado selecionado pelo usuário.
      • label_description: cadeia de caracteres. Descrição do resultado selecionado pelo usuário.
      • source_table: cadeia de caracteres. Nome da tabela de origem que contém o resultado selecionado.
      • ais_doc_id: cadeia de caracteres. Nome separado por sublinhado da tabela de origem e sys_id do registro de resultado para cada resultado selecionado pelo usuário. Por exemplo, se o usuário clicou em um resultado da tabela Conhecimento [kb_knowledge], o valor estará no formato kb_knowledge_3020c9b14843210e9db4b5b08b9a712d. Aplicável apenas a pesquisas feitas com o mecanismo Pesquisa com IA.
    • Colete dados quando um usuário pesquisar um termo e colete a classificação do resultado da pesquisa em que o usuário clicou:
      • consulta: cadeia de caracteres. A consulta que está sendo pesquisada.
      • portal_id: cadeia de caracteres. Sys_id do registro do portal da tabela Portais de serviço [sp_portal].
      • page_id: cadeia de caracteres. Sys_id do registro de página da tabela Páginas [sp_page].
      • resultados_per_source: matriz. Número de resultados retornados de cada origem de pesquisa.
        • source_id: cadeia de caracteres. Sys_id do registro de origem de pesquisa da tabela Origens de pesquisa [sp_search_source].
        • number_of_results: número. Número de resultados retornados da consulta para a origem de pesquisa específica.
      • ais_profile: cadeia de caracteres. Sys_id do perfil de pesquisa aplicado à pesquisa. Aplicável apenas a pesquisas feitas com o mecanismo Pesquisa com IA.
      • search_results: matriz. Resumo dos registros retornados na primeira página de resultados da pesquisa.
        • record_id: cadeia de caracteres. Sys_id do registro do resultado da pesquisa.
        • table_name: cadeia de caracteres. Nome da tabela na qual o registro do resultado da pesquisa foi encontrado.
      • click_rank: número. Classificação do item selecionado pelo usuário. Por exemplo, se o usuário clicou no terceiro item em uma lista de resultados de pesquisa, o valor será 3.
      • ais_doc_id: cadeia de caracteres. Nome separado por sublinhado da tabela de origem e sys_id do registro de resultado para cada resultado selecionado pelo usuário. Por exemplo, se o usuário clicou em um resultado da tabela Conhecimento [kb_knowledge], o valor estará no formato kb_knowledge_3020c9b14843210e9db4b5b08b9a712d. Aplicável apenas a pesquisas feitas com o mecanismo Pesquisa com IA.
    Tabela 2. Retorna
    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;
    }