GlideSPSearchAnalytics : Global

  • Freigeben Version: Xanadu
  • Aktualisiert 1. August 2024
  • 6 Minuten Lesedauer
  • Die GlideSPSearchAnalytics- API bietet Methoden zum Generieren von Suchanalysen aus anwenderdefinierten ServiceNow -Such-Widgets.

    Standardmäßig erfassen die Tabellen „Suchereignisse“ [sys_search_event] und „Suchquellenereignisse“ [sys_search_source_event] Suchdaten aus Such-Widgets des Basissystems. Anwenderdefinierte Such-Widgets profitieren jedoch nicht von dieser Funktion. Verwenden Sie diese API im Serverskript von anwenderdefinierten 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 sammelt die folgenden Suchdaten:
    • Gesuchte Begriffe
    • Rang der angeklickten Elemente
    • Filter, die zum Einschränken von Suchergebnissen verwendet werden
    • 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 (Zeichenfolgennutzlast)

    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 „Suchsignalergebnisereignis“ [sys_search_signal_result_event], wenn ein Anwender klickt auf ein Suchergebnis.

    Tabelle : 1. Parameter
    Name Typ Beschreibung
    Nutzlast Zeichenfolge JSON-Nutzlast im Zeichenfolgenformat, die 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-Ereignistabellen [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 sammeln möchten.
    • Daten sammeln, wenn der Anwender nach einem Begriff sucht:
      • Abfrage: 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 Tabelle „Seiten“ [sp_page].
      • result_per_source: Array. Anzahl der von jeder Suchquelle zurückgegebenen Ergebnisse.
        • source_id: Zeichenfolge. Sys_id des Suchquelldatensatzes aus der Tabelle „Suchquellen“ [sp_search_source].
        • number_of_results: Anzahl. Anzahl der Ergebnisse, die von der Abfrage für die spezifische Suchquelle zurückgegeben werden.
      • ais_profile: Zeichenfolge. Sys_id des auf die Suche angewendeten Suchprofils. Gilt nur für Suchen, die mit der Engine KI-Suche durchgeführt werden.
      • 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.
      • Refinement_occurred: Boolesch. „Wahr“, wenn der Anwender die Suchergebnisse gefiltert hat. andernfalls „false“.
    • Erfassen Sie Daten, wenn ein Anwender seine Suchergebnisse verfeinert:
      • Abfrage: 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 Tabelle „Seiten“ [sp_page].
      • Refinement_occurred: Boolesch. „Wahr“, wenn der Anwender die Suchergebnisse gefiltert hat. andernfalls „false“.
    • Erfassen Sie den Rang des vom Anwender ausgewählten Suchergebnisses.
      • Abfrage: Zeichenfolge. Die gesuchte Abfrage.
      • portal_id: Zeichenfolge. Sys_id des Portaldatensatzes aus der Tabelle „Serviceportale“ [sp_portal].
      • Click_rank: Anzahl. Rang des vom Anwender ausgewählten Artikels. Wenn der Benutzer beispielsweise auf das dritte Element in einer Liste von Suchergebnissen geklickt hat, lautet der Wert 3.
    • Erfassen Sie Informationen zu dem Suchergebnis, auf das der Anwender klickt. Daten werden in der Tabelle „Suchergebnis angeklickt“ [sys_search_result_clicked] protokolliert.
      • Abfrage: 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 Tabelle „Seiten“ [sp_page].
      • result_per_source: Array. Anzahl der von jeder Suchquelle zurückgegebenen Ergebnisse.
        • source_id: Zeichenfolge. Sys_id des Suchquelldatensatzes aus der Tabelle „Suchquellen“ [sp_search_source].
        • number_of_results: Anzahl. Anzahl der Ergebnisse, die von der Abfrage für die spezifische Suchquelle zurückgegeben werden.
      • Refinement_occurred: Boolesch. „Wahr“, wenn der Anwender die Suchergebnisse gefiltert hat. andernfalls „false“.
      • Click_rank: Anzahl. Rang des vom Anwender ausgewählten Artikels. Wenn der Benutzer beispielsweise auf das dritte Element in einer Liste von Suchergebnissen geklickt hat, lautet der Wert 3.
      • browser_info: Zeichenfolge. Protokolliert Browsername, Version und Plattform.
      • Speicherort: Float. Protokolliert die Breiten- und Längengradkoordinaten des Anwenderstandorts.
      • result_clicked_sys_id: Zeichenfolge. Sys_id des vom Anwender ausgewählten Ergebnisses.
      • label_description: Zeichenfolge. Beschreibung des vom Anwender 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 Anwender ausgewählte Ergebnis. Wenn der Benutzer beispielsweise auf ein Ergebnis aus der Wissenstabelle [kb_knowledge] geklickt hat, hat der Wert die Form kb_knowledge_3020c9b14843210e9db4b5b08b9a712d. Gilt nur für Suchen, die mit der Engine KI-Suche durchgeführt werden.
    • Erfassen Sie Daten, wenn ein Anwender nach einem Begriff sucht, und erfassen Sie den Rang des Suchergebnisses, auf das der Anwender geklickt hat:
      • Abfrage: 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 Tabelle „Seiten“ [sp_page].
      • result_per_source: Array. Anzahl der von jeder Suchquelle zurückgegebenen Ergebnisse.
        • source_id: Zeichenfolge. Sys_id des Suchquelldatensatzes aus der Tabelle „Suchquellen“ [sp_search_source].
        • number_of_results: Anzahl. Anzahl der Ergebnisse, die von der Abfrage für die spezifische Suchquelle zurückgegeben werden.
      • ais_profile: Zeichenfolge. Sys_id des auf die Suche angewendeten Suchprofils. Gilt nur für Suchen, die mit der Engine KI-Suche durchgeführt werden.
      • 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: Anzahl. Rang des vom Anwender ausgewählten Artikels. 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 Anwender ausgewählte Ergebnis. Wenn der Benutzer beispielsweise auf ein Ergebnis aus der Wissenstabelle [kb_knowledge] geklickt hat, hat der Wert die Form kb_knowledge_3020c9b14843210e9db4b5b08b9a712d. Gilt nur für Suchen, die mit der Engine KI-Suche durchgeführt werden.
    Tabelle : 2. Ergebnisse
    Typ Beschreibung
    Keine

    In diesem Beispiel werden Daten der Direktsuche an die Such-Analytics-Tabellen ü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 Daten der Direktsuche dynamisch aus einem anwenderdefinierten Such-Widget erfasst und an die Such-Analytics-Tabellen ü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 direkt angeklickten Suchergebnissen aus einem anwenderdefinierten Such-Widget erfasst und an die Tabelle „Suchanalysen“ [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;
    }