GlideSPSearchAnalytics : global

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 7 minutes de lecture
  • Génère 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 de table 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

    Les suggestions de recherche sont une fonctionnalité Now Platform. Pour plus d’informations, consultez 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 sélectionné [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. 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 de caractères. 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 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 de caractères. 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 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 recherche a été trouvé.
      • refinement_occurred : booléen. Vrai si l’utilisateur a filtré les résultats de recherche ; Sinon, c’est faux.
    • Collectez 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 de caractères. Sys_id de l’enregistrement du portail à partir de la table Portails de services [sp_portal].
      • page_id : chaîne de caractères. 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 recherche ; Sinon, c’est faux.
    • Collectez le classement du résultat de recherche sélectionné par l’utilisateur.
      • requête : Chaîne. 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 dans une liste de résultats de recherche, la valeur est 3.
    • Collectez des informations sur les résultats de recherche sur lesquels l’utilisateur clique. Les données sont enregistrées 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 de caractères. Sys_id de l’enregistrement du portail à partir de la table Portails de services [sp_portal].
      • page_id : chaîne de caractères. 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 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 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 dans une liste de résultats de recherche, la valeur est 3.
      • browser_info : chaîne de caractères. Consigne le nom, la version et la plateforme du navigateur.
      • emplacement : Flotteur. Consigne 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 de caractères. 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 de caractères. Nom de la table source et sys_id séparés par des traits de soulignement de l’enregistrement de résultat 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 de la forme kb_knowledge_3020c9b14843210e9db4b5b08b9a712d. S’applique 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. 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 de caractères. 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 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 de caractères. 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 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 dans une liste de résultats de recherche, la valeur est 3.
      • ais_doc_id : chaîne de caractères. Nom de la table source et sys_id séparés par des traits de soulignement de l’enregistrement de résultat 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 de la forme kb_knowledge_3020c9b14843210e9db4b5b08b9a712d. S’applique 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 les 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 sélectionné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;
    }