Paginer les résultats de la source de recherche

  • Rversion finale: Washingtondc
  • Mis à jour 1 févr. 2024
  • 3 minutes de lecture
  • Limitez le nombre de résultats qu'une source de recherche affiche simultanément pour améliorer les performances. Les utilisateurs finaux peuvent charger plus de résultats au besoin.

    Avant de commencer

    Rôle requis : admin ou sp_admin

    Pourquoi et quand exécuter cette tâche

    Si vous ajoutez une pagination à une source de recherche simple, définissez Paginate results sur l’enregistrement de la source de recherche sur true. Toutefois, si vous ajoutez la pagination à une source de recherche avancée, vous devez également modifier le script d’extraction de données pour gérer plusieurs pages de résultats. Lorsqu’un utilisateur charge plus de résultats de recherche, la source de recherche réexécute le script d’extraction de données.
    Remarque :
    Si vous paginez une source de recherche avec des facettes avancées, ne modifiez pas le script de génération de facette pour charger les facettes en fonction des résultats de chaque page. Les facettes doivent permettre aux utilisateurs finaux de filtrer les résultats à partir d’un ensemble de résultats, plutôt que des résultats spécifiques à une page.

    Procédure

    1. Dans l’interface utilisateur de la plateforme, accédez à Portail de services > Sources de recherche.
    2. Ouvrez une source de recherche à laquelle ajouter une pagination.
    3. Dans l’onglet Source de données , définissez Paginate results (Paginer les résultats ) sur true (vrai).
      L’activation de ce champ ajoute un bouton Charger plus de résultats à la page des résultats de recherche. Ce marqueur active automatiquement la pagination pour les sources de recherche simples.
    4. Facultatif : Si la source de recherche est avancée, modifiez le script d’extraction de données pour gérer plusieurs pages de résultats de recherche.
      Mettez à jour le script d’extraction de données à l’aide de l’une des API GlideRecord suivantes, en fonction de l’étendue de la source de recherche.
      Périmètre Méthode
      Global setLocation() dans GlideRecord - Global
      Application incluse dans le périmètre chooseWindow() dans GlideRecord - Scoped

      Voici un exemple de script d’extraction de données pour une source de recherche globale qui interroge la table d’incidents et pagine les résultats.

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

      Pour obtenir un exemple supplémentaire, consultez la source de recherche de la base de connaissances.

    5. Définissez le nombre maximal de résultats par requête pour la source de recherche dans les options d’instance du widget Page de recherche ou du widget de recherche à facettes.

    Résultats

    La page de recherche renvoie uniquement le nombre défini de résultats à la fois. Lorsqu’un utilisateur sélectionne Charger plus de résultats, la source de recherche réexécute la requête ou le script d’extraction de données.

    Résultats paginés