GlideSPSearchAnalytics : global

  • Rversion finale: Australia
  • Mis à jour 12 mars 2026
  • 7 minutes de lecture
  • L’API GlideSPSearchAnalytics fournit des méthodes permettant de 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 Événements de source de recherche [sys_search_source_event] collectent des données de recherche à partir des 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 Suggestions de recherche pertinentes pour vos utilisateurs et surveillez les analyses de recherche pour comprendre ce que vos 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 cliqués, y compris le navigateur et l’emplacement

    Suggestions de recherche est une ServiceNow AI Platform fonctionnalité. Pour plus d’informations, voir Suggestions de recherche.

    GlideSPSearchAnalytics : publier (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 les charges utiles sous forme de 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. La 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 source de recherche à partir de la table Sources de recherche [sp_search_source].
        • number_of_results : Nombre. 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 du résultat de la recherche.
        • table_name : chaîne. Nom de la table dans laquelle l’enregistrement du résultat de la recherche a été trouvé.
      • refinement_occurred : Booléen. True 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. La 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. True 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. La 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 connectent à la table Résultat de recherche sélectionné [sys_search_result_clicked].
      • requête : chaîne. La 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 source de recherche à partir de la table Sources de recherche [sp_search_source].
        • number_of_results : Nombre. Nombre de résultats renvoyés par la requête pour la source de recherche spécifique.
      • refinement_occurred : Booléen. True 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. Consigne 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 de résultat séparés par des traits de soulignement pour chaque résultat sélectionné par l’utilisateur. Par exemple, si l’utilisateur clique sur un résultat de la table Connaissances [kb_knowledge], la valeur est de la forme kb_knowledge_3020c9b14843210e9db4b5b08b9a712d. Applicable uniquement aux recherches effectuées avec le Recherche IA moteur.
    • Collectez des données lorsqu’un utilisateur recherche un terme et collectez le classement du résultat de recherche sur lequel l’utilisateur a cliqué :
      • requête : chaîne. La 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 source de recherche à partir de la table Sources de recherche [sp_search_source].
        • number_of_results : Nombre. 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 sur la première page des résultats de recherche.
        • record_id : Chaîne. Sys_id de l’enregistrement du résultat de la recherche.
        • table_name : chaîne. Nom de la table dans laquelle l’enregistrement du résultat de la 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 de résultat séparés par des traits de soulignement pour chaque résultat sélectionné par l’utilisateur. Par exemple, si l’utilisateur clique sur un résultat de la table Connaissances [kb_knowledge], la valeur est de la forme 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és à 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;
    }