GlideSPSearchAnalytics – Global

  • Freigeben Version: Zurich
  • Aktualisiert 31. Juli 2025
  • 6 Minuten Lesedauer
  • Die GlideSPSearchAnalytics Die API bietet Methoden zum Generieren von Such-Analytics aus anwenderdefinierten ServiceNow Durchsuchen Sie 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 erfasst die folgenden Suchdaten:
    • Gesuchte Begriffe
    • Rang der angeklickten Elemente
    • Filter, die zum Verfeinern der Suchergebnisse verwendet werden
    • Tabellennamen und Datensatzbezeichner auf der ersten Seite der Suchergebnisse
    • Angeklickte Suchergebnisse, einschließlich Browser und Standort

    Suchvorschläge sind eine ServiceNow AI Platform-Funktion. Weitere Informationen finden Sie unter Vorschläge Durchsuchen .

    GlideSPSearchAnalytics – veröffentlichen (Zeichenfolgennutzlast)

    Sendet Suchdaten an die Tabellen „Suchereignis“ [sys_search_event], „Suchereignis pro Quelle“ [sys_search_Source_event] und „Suchereignis“ [sys_search_Signal_event] für Suchergebnisse oder an die Tabellen „Suchergebnis“ [sys_search_result_clicked] und „Suchergebnis-Ereignis“ [sys_search_Signal_result_event], wenn ein Anwender auf ein Suchergebnis klickt.

    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 gesendet werden sollen, oder an die Tabellen „Suchergebnis“ [sys_search_result_event], wenn ein Anwender auf ein Suchergebnis klickt. Strukturieren Sie die Nutzlast als Schlüssel-Wert-Paare entsprechend dem Typ der Suchdaten, die Sie erfassen möchten.
    • Erfassen Sie Daten, wenn der Anwender nach einem Begriff sucht:
      • Abfrage : Zeichenfolge. Die durchsuchte Abfrage.
      • Portal_ID : Zeichenfolge. SYS_ID des Portaldatensatzes aus der Tabelle „Serviceportale“ [sp_Portal].
      • Seiten-ID : Zeichenfolge. SYS_ID des Seitendatensatzes aus der Tabelle „Seiten“ [sp_page].
      • Results_per_Source : Array. Anzahl der von jeder Suchquelle zurückgegebenen Ergebnisse.
        • Quell_ID : Zeichenfolge. SYS_ID des Suchquelldatensatzes aus der Tabelle „Suchquellen“ [sp_search_Source].
        • Number_of_results : Nummer. Anzahl der von der Abfrage für die spezifische Suchquelle zurückgegebenen Ergebnisse.
      • ais_Profile : Zeichenfolge. SYS_ID des auf die Suche angewendeten Suchprofils. Gilt nur für Suchen, die mit durchgeführt werden KI-Suche Engine.
      • Search_results : Array. Ergebnisse, die auf der ersten Seite der Suchergebnisse zurückgegeben werden.
        • Record_ID : Zeichenfolge. SYS_ID des Suchergebnisdatensatzes.
        • Tabellenname : Zeichenfolge. Name der Tabelle, in der der Suchergebnisdatensatz gefunden wurde.
      • Verfeinerung_aufgetreten : Boolescher Wert. „Wahr“, wenn der Anwender die Suchergebnisse gefiltert hat; andernfalls „falsch“.
    • Erfassen Sie Daten, wenn ein Anwender seine Suchergebnisse verfeinert:
      • Abfrage : Zeichenfolge. Die durchsuchte Abfrage.
      • Portal_ID : Zeichenfolge. SYS_ID des Portaldatensatzes aus der Tabelle „Serviceportale“ [sp_Portal].
      • Seiten-ID : Zeichenfolge. SYS_ID des Seitendatensatzes aus der Tabelle „Seiten“ [sp_page].
      • Verfeinerung_aufgetreten : Boolescher Wert. „Wahr“, wenn der Anwender die Suchergebnisse gefiltert hat; andernfalls „falsch“.
    • Erfassen Sie den Rang des vom Anwender ausgewählten Suchergebnisses.
      • Abfrage : Zeichenfolge. Die durchsuchte Abfrage.
      • Portal_ID : Zeichenfolge. SYS_ID des Portaldatensatzes aus der Tabelle „Serviceportale“ [sp_Portal].
      • Click_rank : Nummer. Rang des vom Anwender ausgewählten Elements. Wenn der Anwender beispielsweise auf das dritte Element in einer Liste von Suchergebnissen geklickt hat, lautet der Wert 3 .
    • Sammeln Sie Informationen zu dem Suchergebnis, auf das der Anwender klickt. Datenprotokolle in der Tabelle „angeklicktes Suchergebnis“ [sys_search_result_clicked].
      • Abfrage : Zeichenfolge. Die durchsuchte Abfrage.
      • Portal_ID : Zeichenfolge. SYS_ID des Portaldatensatzes aus der Tabelle „Serviceportale“ [sp_Portal].
      • Seiten-ID : Zeichenfolge. SYS_ID des Seitendatensatzes aus der Tabelle „Seiten“ [sp_page].
      • Results_per_Source : Array. Anzahl der von jeder Suchquelle zurückgegebenen Ergebnisse.
        • Quell_ID : Zeichenfolge. SYS_ID des Suchquelldatensatzes aus der Tabelle „Suchquellen“ [sp_search_Source].
        • Number_of_results : Nummer. Anzahl der von der Abfrage für die spezifische Suchquelle zurückgegebenen Ergebnisse.
      • Verfeinerung_aufgetreten : Boolescher Wert. „Wahr“, wenn der Anwender die Suchergebnisse gefiltert hat; andernfalls „falsch“.
      • Click_rank : Nummer. Rang des vom Anwender ausgewählten Elements. Wenn der Anwender beispielsweise auf das dritte Element in einer Liste von Suchergebnissen geklickt hat, lautet der Wert 3 .
      • Browser_Info : Zeichenfolge. Protokolliert Browsername, Version und Plattform.
      • Standort : Gleitkommazahl. Protokolliert 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. Unterstrich getrennter Name der Quelltabelle und sys_ID des Ergebnisdatensatzes für jedes vom Anwender ausgewählte Ergebnis. Wenn der Anwender beispielsweise auf ein Ergebnis aus der Tabelle „Wissen“ [kb_Knowledge] geklickt hat, ist der Wert das Formular kb_Knowledge_3020c9b14843210e9db4b5b08b9a712d . Gilt nur für Suchen, die mit durchgeführt werden KI-Suche Engine.
    • 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 durchsuchte Abfrage.
      • Portal_ID : Zeichenfolge. SYS_ID des Portaldatensatzes aus der Tabelle „Serviceportale“ [sp_Portal].
      • Seiten-ID : Zeichenfolge. SYS_ID des Seitendatensatzes aus der Tabelle „Seiten“ [sp_page].
      • Results_per_Source : Array. Anzahl der von jeder Suchquelle zurückgegebenen Ergebnisse.
        • Quell_ID : Zeichenfolge. SYS_ID des Suchquelldatensatzes aus der Tabelle „Suchquellen“ [sp_search_Source].
        • Number_of_results : Nummer. Anzahl der von der Abfrage für die spezifische Suchquelle zurückgegebenen Ergebnisse.
      • ais_Profile : Zeichenfolge. SYS_ID des auf die Suche angewendeten Suchprofils. Gilt nur für Suchen, die mit durchgeführt werden KI-Suche Engine.
      • Search_results : Array. Zusammenfassung der Datensätze, die auf der ersten Seite der Suchergebnisse zurückgegeben wurden.
        • Record_ID : Zeichenfolge. SYS_ID des Suchergebnisdatensatzes.
        • Tabellenname : Zeichenfolge. Name der Tabelle, in der der Suchergebnisdatensatz gefunden wurde.
      • Click_rank : Nummer. Rang des vom Anwender ausgewählten Elements. Wenn der Anwender beispielsweise auf das dritte Element in einer Liste von Suchergebnissen geklickt hat, lautet der Wert 3 .
      • ais_doc_ID : Zeichenfolge. Unterstrich getrennter Name der Quelltabelle und sys_ID des Ergebnisdatensatzes für jedes vom Anwender ausgewählte Ergebnis. Wenn der Anwender beispielsweise auf ein Ergebnis aus der Tabelle „Wissen“ [kb_Knowledge] geklickt hat, ist der Wert das Formular kb_Knowledge_3020c9b14843210e9db4b5b08b9a712d . Gilt nur für Suchen, die mit durchgeführt werden KI-Suche Engine.
    Tabelle : 2. Rückgaben
    Typ Beschreibung
    Keine

    In diesem Beispiel werden direkte Suchdaten 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 direkten Suche 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, auf die direkte Suchergebnisse geklickt wurden, aus einem anwenderdefinierten Such-Widget erfasst und an die Such-Analytics-Tabelle [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;
    }