GlideSPSearchAnalytics : global

  • Rversion finale: Xanadu
  • Mis à jour 1 août 2024
  • 8 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 les 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 des tables et identificateurs d’enregistrement figurant sur 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, reportez-vous à la section Suggestions de recherche.

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

    Envoie les 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
    payload 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 sous forme de paires clé-valeur en fonction du type de données de recherche que vous souhaitez collecter.
    • Collectez des données lorsque l’utilisateur recherche un terme :
      • requête : chaîne de caractères. Requête faisant l’objet de la recherche.
      • portal_id : chaîne de caractères. 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 de caractères. Sys_id de l’enregistrement de la 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. S’applique uniquement aux recherches effectuées avec le Recherche IA moteur.
      • search_results : Tableau. Résultats retournés dans la première page des résultats de recherche.
        • record_id : chaîne de caractères. Sys_id de l’enregistrement des résultats de recherche.
        • table_name : chaîne de caractères. Nom de la table dans laquelle l’enregistrement des résultats de la recherche a été trouvé.
      • refinement_occurred : booléen. Vrai si l’utilisateur a filtré les résultats de la recherche ; Sinon, c’est faux.
    • Collectez des données lorsqu’un utilisateur affine ses résultats de recherche :
      • requête : chaîne de caractères. Requête faisant l’objet de la recherche.
      • portal_id : chaîne de caractères. 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, c’est faux.
    • Collectez le classement du résultat de recherche que l’utilisateur a sélectionné.
      • requête : chaîne de caractères. Requête faisant l’objet de la recherche.
      • portal_id : chaîne de caractères. 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.
    • Collectez des informations sur le résultat de recherche sur lequel l’utilisateur clique. Les journaux de données se connectent à la table Résultat de la recherche cliquée [sys_search_result_clicked].
      • requête : chaîne de caractères. Requête faisant l’objet de la recherche.
      • portal_id : chaîne de caractères. 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 de caractères. Sys_id de l’enregistrement de la 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. Vrai si l’utilisateur a filtré les résultats de la recherche ; Sinon, c’est 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. Enregistre le nom du navigateur, la version et la plateforme.
      • emplacement : Float. Enregistre les coordonnées de latitude et de longitude de l’emplacement de l’utilisateur.
      • result_clicked_sys_id : chaîne de caractères. 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 de caractères. 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 a cliqué sur un résultat de la table de connaissances [kb_knowledge], la valeur est de la forme kb_knowledge_3020c9b14843210e9db4b5b08b9a712d. S’applique uniquement aux recherches effectuées avec le Recherche IA moteur.
    • Collectez les 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 de caractères. Requête faisant l’objet de la recherche.
      • portal_id : chaîne de caractères. 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 de caractères. Sys_id de l’enregistrement de la 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. S’applique 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 de caractères. Sys_id de l’enregistrement des résultats de recherche.
        • table_name : chaîne de caractères. Nom de la table dans laquelle l’enregistrement des résultats 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 a cliqué sur un résultat de la table de connaissances [kb_knowledge], la valeur est de la forme kb_knowledge_3020c9b14843210e9db4b5b08b9a712d. S’applique uniquement aux recherches effectuées avec le Recherche IA moteur.
    Tableau 2. Renvoie
    Type Description
    Aucun

    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 sur les résultats de recherche directs cliqués à partir d’un widget de recherche personnalisé et les transmet à la table d’analyse de la 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;
    }