GlideSPSearchAnalytics – Global

  • Freigeben Version: Washingtondc
  • Aktualisiert 1. Februar 2024
  • 6 Minuten Lesedauer
  • Generiert Suchanalysen aus benutzerdefinierten ServiceNow Such-Widgets.

    Standardmäßig erfassen die Tabellen „Suchereignisse“ [sys_search_event] und „Suchquellenereignisse“ [sys_search_source_event] Suchdaten aus Such-Widgets des Basissystems. Benutzerdefinierte Such-Widgets profitieren jedoch nicht von dieser Funktion. Verwenden Sie diese API im Serverskript von benutzerdefinierten Such-Widgets in globalen Umgebungen, um Suchdaten an die Suchereignistabellen zu senden. Generieren Zeigen Sie relevante Suchvorschläge für Ihre Benutzer an und überwachen Sie Suchanalysen, um zu verstehen, was Ihre Benutzer suchen und ob sie finden, was sie benötigen.

    Diese API erfasst die folgenden Suchdaten:
    • Gesuchte Begriffe
    • Rang der angeklickten Elemente
    • Filter zum Verfeinern der Suchergebnisse
    • Tabellennamen und Datensatzbezeichner von der ersten Seite der Suchergebnisse
    • Angeklickte Suchergebnisse, einschließlich Browser und Standort

    Suchvorschläge sind eine Now Platform-Funktion. Weitere Informationen finden Sie unter Suchvorschläge.

    GlideSPSearchAnalytics – veröffentlichen(String payload)

    Sendet Suchdaten an die Tabellen „Suchereignis“ [sys_search_event], „Suchereignis pro Quelle“ [sys_search_source_event] und „Suchsignalereignis“ [sys_search_signal_event] für Suchergebnisse oder an die Tabellen „Suchergebnis angeklickt“ [sys_search_result_clicked] und „Suchsignalergebnis-Event“ [sys_search_signal_result_event], wenn ein Benutzer auf ein Suchergebnis klickt.

    Tabelle : 1. Parameter
    Name Typ Beschreibung
    Nutzlast Zeichenfolge JSON-Nutzlast im Zeichenfolgenformat, das die Suchdaten enthält, die an die Tabellen „Suchereignis“ [sys_search_event], „Suchereignis pro Quelle“ [sys_search_source_event] und „Suchsignalereignis“ [sys_search_signal_event] für Suchergebnisse oder an die Tabellen „Suchergebnis angeklickt“ [sys_search_result_clicked] und „Suche“ gesendet werden sollen Signalergebnis-Event-Tabellen [sys_search_signal_result_event], wenn ein Benutzer auf ein Suchergebnis klickt. Strukturieren Sie die Nutzlast als Schlüssel-Wert-Paare entsprechend der Art der Suchdaten, die Sie erfassen möchten.
    • Erfasst Daten, wenn der Benutzer nach einem Begriff sucht:
      • query: Zeichenfolge. Die gesuchte Abfrage.
      • portal_id: Zeichenfolge. Sys_id des Portaldatensatzes aus der Tabelle „Serviceportale“ [sp_portal].
      • page_id: Zeichenfolge. Sys_id des Seitendatensatzes aus der Seitentabelle [sp_page].
      • results_per_source: Array. Anzahl der von jeder Suchquelle zurückgegebenen Ergebnisse.
        • source_id: Zeichenfolge. Sys_id des Suchquellendatensatzes aus der Tabelle „Suchquellen“ [sp_search_source].
        • number_of_results: Nummer. Anzahl der von der Abfrage für die angegebene Suchquelle zurückgegebenen Ergebnisse.
      • ais_profile: Zeichenfolge. Sys_id des auf die Suche angewendeten Suchprofils. Gilt nur für Suchen, die mit der Engine KI-Suche durchgeführt wurden.
      • search_results: Array. Ergebnisse, die auf der ersten Seite der Suchergebnisse zurückgegeben werden.
        • record_id: Zeichenfolge. Sys_id des Suchergebnisdatensatzes.
        • table_name: Zeichenfolge. Name der Tabelle, in der der Suchergebnisdatensatz gefunden wurde.
      • finement_occurred: Boolean. „True“, wenn der Benutzer die Suchergebnisse gefiltert hat; andernfalls „false“.
    • Erfasst Daten, wenn ein Benutzer seine Suchergebnisse einschränkt:
      • query: Zeichenfolge. Die gesuchte Abfrage.
      • portal_id: Zeichenfolge. Sys_id des Portaldatensatzes aus der Tabelle „Serviceportale“ [sp_portal].
      • page_id: Zeichenfolge. Sys_id des Seitendatensatzes aus der Seitentabelle [sp_page].
      • finement_occurred: Boolean. „True“, wenn der Benutzer die Suchergebnisse gefiltert hat; andernfalls „false“.
    • Erfassen Sie den Rang des Suchergebnisses, das der Benutzer ausgewählt hat.
      • query: Zeichenfolge. Die gesuchte Abfrage.
      • portal_id: Zeichenfolge. Sys_id des Portaldatensatzes aus der Tabelle „Serviceportale“ [sp_portal].
      • click_rank: Nummer. Rang des vom Benutzer ausgewählten Elements. Wenn der Benutzer beispielsweise auf das dritte Element in einer Liste von Suchergebnissen geklickt hat, lautet der Wert 3.
    • Erfasst Informationen über das Suchergebnis, auf das der Benutzer klickt. Datenprotokolle in der Tabelle „Suchergebnis angeklickt“ [sys_search_result_clicked].
      • query: Zeichenfolge. Die gesuchte Abfrage.
      • portal_id: Zeichenfolge. Sys_id des Portaldatensatzes aus der Tabelle „Serviceportale“ [sp_portal].
      • page_id: Zeichenfolge. Sys_id des Seitendatensatzes aus der Seitentabelle [sp_page].
      • results_per_source: Array. Anzahl der von jeder Suchquelle zurückgegebenen Ergebnisse.
        • source_id: Zeichenfolge. Sys_id des Suchquellendatensatzes aus der Tabelle „Suchquellen“ [sp_search_source].
        • number_of_results: Nummer. Anzahl der von der Abfrage für die angegebene Suchquelle zurückgegebenen Ergebnisse.
      • finement_occurred: Boolean. „True“, wenn der Benutzer die Suchergebnisse gefiltert hat; andernfalls „false“.
      • click_rank: Nummer. Rang des vom Benutzer ausgewählten Elements. Wenn der Benutzer beispielsweise auf das dritte Element in einer Liste von Suchergebnissen geklickt hat, lautet der Wert 3.
      • browser_info: Zeichenfolge. Protokolliert Name, Version und Plattform des Browsers.
      • Speicherort: Float. Protokolliert Breiten- und Längengradkoordinaten des Anwenderstandorts.
      • result_clicked_sys_id: Zeichenfolge. Sys_id des vom Benutzer ausgewählten Ergebnisses.
      • label_description: Zeichenfolge. Beschreibung des vom Benutzer ausgewählten Ergebnisses.
      • source_table: Zeichenfolge. Name der Quelltabelle, die das ausgewählte Ergebnis enthält.
      • ais_doc_id: Zeichenfolge. Durch Unterstriche getrennter Name der Quelltabelle und sys_id des Ergebnisdatensatzes für jedes vom Benutzer ausgewählte Ergebnis. Wenn der Benutzer beispielsweise auf ein Ergebnis aus der Wissenstabelle [kb_knowledge] geklickt hat, hat der Wert das Format kb_knowledge_3020c9b14843210e9db4b5b08b9a712d. Gilt nur für Suchen, die mit der Engine KI-Suche durchgeführt wurden.
    • Erfassen Sie Daten, wenn ein Benutzer nach einem Begriff sucht, und erfassen Sie den Rang des Suchergebnisses, auf das der Benutzer geklickt hat:
      • query: Zeichenfolge. Die gesuchte Abfrage.
      • portal_id: Zeichenfolge. Sys_id des Portaldatensatzes aus der Tabelle „Serviceportale“ [sp_portal].
      • page_id: Zeichenfolge. Sys_id des Seitendatensatzes aus der Seitentabelle [sp_page].
      • results_per_source: Array. Anzahl der von jeder Suchquelle zurückgegebenen Ergebnisse.
        • source_id: Zeichenfolge. Sys_id des Suchquellendatensatzes aus der Tabelle „Suchquellen“ [sp_search_source].
        • number_of_results: Nummer. Anzahl der von der Abfrage für die angegebene Suchquelle zurückgegebenen Ergebnisse.
      • ais_profile: Zeichenfolge. Sys_id des auf die Suche angewendeten Suchprofils. Gilt nur für Suchen, die mit der Engine KI-Suche durchgeführt wurden.
      • search_results: Array. Zusammenfassung der Datensätze, die auf der ersten Seite der Suchergebnisse zurückgegeben werden.
        • record_id: Zeichenfolge. Sys_id des Suchergebnisdatensatzes.
        • table_name: Zeichenfolge. Name der Tabelle, in der der Suchergebnisdatensatz gefunden wurde.
      • click_rank: Nummer. Rang des vom Benutzer ausgewählten Elements. Wenn der Benutzer beispielsweise auf das dritte Element in einer Liste von Suchergebnissen geklickt hat, lautet der Wert 3.
      • ais_doc_id: Zeichenfolge. Durch Unterstriche getrennter Name der Quelltabelle und sys_id des Ergebnisdatensatzes für jedes vom Benutzer ausgewählte Ergebnis. Wenn der Benutzer beispielsweise auf ein Ergebnis aus der Wissenstabelle [kb_knowledge] geklickt hat, hat der Wert das Format kb_knowledge_3020c9b14843210e9db4b5b08b9a712d. Gilt nur für Suchen, die mit der Engine KI-Suche durchgeführt wurden.
    Tabelle : 2. Ergebnisse
    Typ Beschreibung
    Keine

    In diesem Beispiel werden Suchdaten direkt an die Suchanalysetabellen übergeben.

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

    In diesem Beispiel werden dynamisch direkte Suchdaten aus einem benutzerdefinierten Such-Widget erfasst und an die Suchanalysetabellen übergeben.

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

    In diesem Beispiel werden Daten zu direkten Suchergebnissen und angeklickten Daten aus einem benutzerdefinierten Such-Widget erfasst und an die Suchanalysetabelle [sys_search_result_clicked] übergeben.

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