Suchquellenergebnisse paginieren

  • Freigeben Version: Xanadu
  • Aktualisiert 1. August 2024
  • 2 Minuten Lesedauer
  • Begrenzen Sie die Anzahl der Ergebnisse, die eine Suchquelle gleichzeitig anzeigt, um die Leistung zu verbessern. Endbenutzer können bei Bedarf weitere Ergebnisse laden.

    Vorbereitungen

    Erforderliche Rolle: admin oder sp_admin

    Warum und wann dieser Vorgang ausgeführt wird

    Wenn Sie einer einfachen Suchquelle eine Paginierung hinzufügen möchten, stellen Sie im Suchquellendatensatz Ergebnisse paginieren auf „true“. Falls Sie einer erweiterten Suchquelle jedoch Paginierung hinzufügen, müssen Sie auch das Datenabfrageskript ändern, um mehrere Ergebnisseiten zu verarbeiten. Sobald ein Benutzer mehr Suchergebnisse lädt, führt die Suchquelle das Datenabfrageskript erneut aus.
    Hinweis:
    Wenn Sie eine Suchquelle mit erweiterten Aspekten paginieren, dürfen Sie das Skript für die Aspektgenerierung nicht ändern, um Aspekte basierend auf den Ergebnissen jeder Seite zu laden. Aspekte sollen Endbenutzern ermöglichen, Ergebnisse aus einer gesamten Ergebnismenge anstatt seitenabhängige Ergebnisse zu filtern.

    Prozedur

    1. Navigieren Sie in der Plattform-UI zu Service Portal > Suchquellenan.
    2. Öffnen Sie eine Suchquelle, um die Paginierung hinzuzufügen.
    3. Legen Sie auf der Registerkarte „ Datenquelle “ die Option Paginierungsergebnisse auf „wahr“ fest.
      Wenn Sie dieses Feld aktivieren, wird eine Schaltfläche Weitere Ergebnisse laden zur Suchergebnisseite hinzugefügt. Dieses Flag aktiviert automatisch die Paginierung für einfache Suchquellen.
    4. Wahlweise: Wenn die Suchquelle erweitert ist, ändern Sie das Datenabfrageskript, um mehrere Suchergebnisseiten zu verarbeiten.
      Aktualisieren Sie das Datenabfrageskript, je nach Umfang der Suchquelle, mit einem der folgenden GlideRecord-APIs.
      Umfang Methode
      Global setLocation() in GlideRecord – global
      Bereichsbezogene Anwendung wählen Sie Fenster () in GlideRecord – Bereichsbezogen

      Es folgt ein Beispiel eines Datenabfrageskripts für eine globale Suchquelle, das die Incident-Tabelle abfragt und die Ergebnisse paginiert.

      // queryLocation is a special value injected into the script,
      // which holds the query_location property of the last item
      // in the previously fetched result set
      (function(query, queryLocation, count) {
      	var results = [];
      	var now_GR = new GlideRecord("incident");
      	gr.addQuery("123TEXTQUERY321", query);
      	gr.query();
      	// Here, we are utilizing queryLocation to implement pagination.
      	// In practice, there are many other ways to use the
      	// query_location value of the last item in the previous
      	// result set to implement pagination. Your implementation
      	// will vary by use case.
      	gr.setLocation(queryLocation - 1);
      
      	var resultCount = 0;
      	while(gr.next() && resultCount < count + 1) {
      		results.push({
      			label: gr.getDisplayValue(),
      			short_description: gr.getValue("short_description"),
      			// Here, we are populating the query_location
      			// property of each result item. This is how the
      			// framework knows what value to pass into the
      			// next fetched search result script execution
      			query_location: gr.getLocation(),
      			primary: gr.getDisplayValue(),
      			state: gr.getDisplayValue("state")
      		});
      		resultCount++;
      	}
      
      	if (results.length == 0)
      		return results;
      
      	if(results.length > count) {
      		results.pop();
      	} else {
      		// In order to indicate that a result in the result
      		// set is the final result (that there are
      		// no more results to be fetched), add this property
      		// to the final element in your result set.
      		results[results.length - 1].isLastResult = true;
      	}
      	return results;
      })(query, queryLocation, count, facets);

      Ein weiteres Beispiel finden Sie in der Knowledge-Base-Suchquelle.

    5. Definieren Sie die maximale Anzahl von Ergebnissen pro Abfrage für die Suchquelle in den Instanzoptionen für das Suchseiten-Widget oder für das Aspektsuche-Widget.

    Ergebnisse

    Die Suchseite gibt nur die definierte Anzahl von Ergebnissen gleichzeitig zurück. Wenn ein Benutzer Weitere Ergebnisse laden auswählt, führt die Suchquelle die Abfrage oder das Datenabfrageskript erneut aus.

    Paginierte Ergebnisse