GlideSPSearchAnalytics : global

  • Rversion finale: Yokohama
  • Mis à jour 30 janv. 2025
  • 7 minutes de lecture
  • L’API GlideSPSearchAnalytics fournit des méthodes pour générer des analyses de recherche à partir de widgets de recherche personnalisés ServiceNow .

    Par défaut, les tables Événements de recherche [sys_search_event] et Rechercher des événements par source [sys_search_source_event] recueillent des données de recherche à partir de widgets de recherche du système de base. Toutefois, les widgets de recherche personnalisés ne bénéficient pas de cette fonctionnalité. Utilisez cette API dans le script serveur des widgets de recherche personnalisés dans des environnements globaux pour envoyer des données de recherche aux tables d’événements de recherche. Générer des suggestions de recherche pertinentes pour les utilisateurs et surveillez l'analyse de recherche pour comprendre ce que les utilisateurs recherchent et s'ils trouvent ce dont ils ont besoin.

    Cette API collecte les données de recherche suivantes :
    • Termes recherchés
    • Classement des éléments cliqués
    • Filtres utilisés pour affiner les résultats de recherche
    • Noms de tables et identificateurs d’enregistrement de la première page des résultats de recherche
    • Résultats de recherche sélectionnés, y compris le navigateur et l’emplacement

    Les suggestions de recherche sont une fonctionnalité Now Platform. Pour plus d’informations, voir Suggestions de recherche.

    GlideSPSearchAnalytics : publish(charge utile de la chaîne)

    Envoie des données de recherche aux tables Événement de recherche [sys_search_event], Événement de recherche par source [sys_search_source_event] et Événement de signal de recherche [sys_search_signal_event] pour les résultats de recherche, ou aux tables Résultat de recherche cliqué [sys_search_result_clicked] et Événement de résultat de signal de recherche [sys_search_signal_result_event] lorsqu’un utilisateur clique sur un résultat de recherche.

    Tableau 1. Paramètres
    Nom Type Description
    charge utile Chaîne Charge utile JSON au format chaîne contenant les données de recherche à envoyer aux tables Événement de recherche [sys_search_event], Événement de recherche par source [sys_search_source_event] et Événement de signal de recherche [sys_search_signal_event] pour les résultats de recherche, ou aux tables Résultat de recherche cliqué [sys_search_result_clicked] et Événement de résultat de signal de recherche [sys_search_signal_result_event] lorsqu’un utilisateur clique sur un résultat de recherche. Structurez la charge utile en paires clé-valeur en fonction du type de données de recherche que vous souhaitez collecter.
    • Collecter des données lorsque l’utilisateur recherche un terme :
      • requête : chaîne. Requête faisant l’objet de la recherche.
      • portal_id : Chaîne. Sys_id de l’enregistrement du portail à partir de la table Portails de services [sp_portal].
      • page_id : Chaîne. Sys_id de l’enregistrement de page à partir de la table Pages [sp_page].
      • results_per_source : Tableau. Nombre de résultats renvoyés par chaque source de recherche.
        • source_id : Chaîne. Sys_id de l’enregistrement de la source de recherche à partir de la table Sources de recherche [sp_search_source].
        • number_of_results : Numéro. Nombre de résultats renvoyés par la requête pour la source de recherche spécifique.
      • ais_profile : Chaîne. Sys_id du profil de recherche appliqué à la recherche. Applicable uniquement aux recherches effectuées avec le Recherche IA moteur.
      • search_results : Tableau. Résultats renvoyés sur la première page des résultats de recherche.
        • record_id : Chaîne. Sys_id de l’enregistrement des résultats de recherche.
        • table_name : chaîne. Nom de la table dans laquelle l’enregistrement du résultat de recherche a été trouvé.
      • refinement_occurred : Booléen. Vrai si l’utilisateur a filtré les résultats de la recherche ; sinon faux.
    • Collecter des données lorsqu’un utilisateur affine ses résultats de recherche :
      • requête : chaîne. Requête faisant l’objet de la recherche.
      • portal_id : Chaîne. Sys_id de l’enregistrement du portail à partir de la table Portails de services [sp_portal].
      • page_id : Chaîne. Sys_id de l’enregistrement de page à partir de la table Pages [sp_page].
      • refinement_occurred : Booléen. Vrai si l’utilisateur a filtré les résultats de la recherche ; sinon faux.
    • Collecter le classement du résultat de recherche que l’utilisateur a sélectionné.
      • requête : chaîne. Requête faisant l’objet de la recherche.
      • portal_id : Chaîne. Sys_id de l’enregistrement du portail à partir de la table Portails de services [sp_portal].
      • click_rank : Nombre. Classement de l’élément sélectionné par l’utilisateur. Par exemple, si l’utilisateur a cliqué sur le troisième élément d’une liste de résultats de recherche, la valeur est 3.
    • Collecter des informations sur le résultat de la recherche sur lequel l’utilisateur clique. Les données se consignent dans la table Résultat de recherche sélectionné [sys_search_result_clicked].
      • requête : chaîne. Requête faisant l’objet de la recherche.
      • portal_id : Chaîne. Sys_id de l’enregistrement du portail à partir de la table Portails de services [sp_portal].
      • page_id : Chaîne. Sys_id de l’enregistrement de page à partir de la table Pages [sp_page].
      • results_per_source : Tableau. Nombre de résultats renvoyés par chaque source de recherche.
        • source_id : Chaîne. Sys_id de l’enregistrement de la source de recherche à partir de la table Sources de recherche [sp_search_source].
        • number_of_results : Numéro. Nombre de résultats renvoyés par la requête pour la source de recherche spécifique.
      • refinement_occurred : Booléen. Vrai si l’utilisateur a filtré les résultats de la recherche ; sinon faux.
      • click_rank : Nombre. Classement de l’élément sélectionné par l’utilisateur. Par exemple, si l’utilisateur a cliqué sur le troisième élément d’une liste de résultats de recherche, la valeur est 3.
      • browser_info : Chaîne. Journalise le nom, la version et la plateforme du navigateur.
      • emplacement : Float. Consigne les coordonnées de latitude et de longitude de l’emplacement de l’utilisateur.
      • result_clicked_sys_id : Chaîne. Sys_id du résultat sélectionné par l’utilisateur.
      • label_description : Chaîne. Description du résultat sélectionné par l’utilisateur.
      • source_table : Chaîne. Nom de la table source contenant le résultat sélectionné.
      • ais_doc_id : Chaîne. Nom de la table source et sys_id de l’enregistrement des résultats séparés par des traits de soulignement pour chaque résultat sélectionné par l’utilisateur. Par exemple, si l’utilisateur a cliqué sur un résultat de la table Connaissances [kb_knowledge], la valeur est le formulaire kb_knowledge_3020c9b14843210e9db4b5b08b9a712d. Applicable uniquement aux recherches effectuées avec le Recherche IA moteur.
    • Collecter des données lorsqu’un utilisateur recherche un terme et collecter le classement du résultat de la recherche sur lequel l’utilisateur a cliqué :
      • requête : chaîne. Requête faisant l’objet de la recherche.
      • portal_id : Chaîne. Sys_id de l’enregistrement du portail à partir de la table Portails de services [sp_portal].
      • page_id : Chaîne. Sys_id de l’enregistrement de page à partir de la table Pages [sp_page].
      • results_per_source : Tableau. Nombre de résultats renvoyés par chaque source de recherche.
        • source_id : Chaîne. Sys_id de l’enregistrement de la source de recherche à partir de la table Sources de recherche [sp_search_source].
        • number_of_results : Numéro. Nombre de résultats renvoyés par la requête pour la source de recherche spécifique.
      • ais_profile : Chaîne. Sys_id du profil de recherche appliqué à la recherche. Applicable uniquement aux recherches effectuées avec le Recherche IA moteur.
      • search_results : Tableau. Résumé des enregistrements renvoyés dans la première page des résultats de recherche.
        • record_id : Chaîne. Sys_id de l’enregistrement des résultats de recherche.
        • table_name : chaîne. Nom de la table dans laquelle l’enregistrement du résultat de recherche a été trouvé.
      • click_rank : Nombre. Classement de l’élément sélectionné par l’utilisateur. Par exemple, si l’utilisateur a cliqué sur le troisième élément d’une liste de résultats de recherche, la valeur est 3.
      • ais_doc_id : Chaîne. Nom de la table source et sys_id de l’enregistrement des résultats séparés par des traits de soulignement pour chaque résultat sélectionné par l’utilisateur. Par exemple, si l’utilisateur a cliqué sur un résultat de la table Connaissances [kb_knowledge], la valeur est le formulaire kb_knowledge_3020c9b14843210e9db4b5b08b9a712d. Applicable uniquement aux recherches effectuées avec le Recherche IA moteur.
    Tableau 2. Renvoie
    Type Description
    Néant

    Cet exemple transmet des données de recherche directe aux tables d’analyse de recherche.

    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));

    Cet exemple collecte dynamiquement des données de recherche directe à partir d’un widget de recherche personnalisé et les transmet aux tables d’analyse de recherche.

    //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;
    }

    Cet exemple collecte des données directes sur les résultats de recherche cliquées à partir d’un widget de recherche personnalisé et les transmet à la table d’analyse de recherche [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;
    }