Buckets

Gérer l'organisation des résultats de recherche avec les buckets

Organiser les buckets

Les buckets (ou résultats d’aggrégation) d’une recherche peuvent être organisées en utilisant l’API JS. Pour cela, il faut définir une fonction permettant de les trier :

  • soit par recherche en fournissant l’identifiant de la recherche concernée
  • soit pour toutes les recherches

    var orderMap = {};
    orderMap[STATUT_1] = 0;
    orderMap[STATUT_2] = 1;
    
    var bucketAPI = JSAPI.get().getHelperFactory().getBucketAPI();
    bucketAPI.register("searchId", function(buckets, callback){
    var ordered = new Array();
    	for(i in buckets){
    		var bucket = buckets[i];
    		var index = getBucketIndex(bucket);
        ordered[index] = bucket;
    }
    	callback.onProcessed(ordered);
    });
    
    function getBucketIndex(bucket){
    	var request = bucket.getRequest();
    var filter = request.getFilters()[0];
    var statusName = filter.getCriteria()[0].getValues()[0];
    	return orderMap[statusName];
    }
    

Récupération des buckets après résolution

Il est possible de récupérer les buckets d’une recherche après résolution de la façon suivante :

var bucketAPI = JSAPI.get().getHelperFactory().getBucketAPI();
bucketAPI.registerForResolved("searchId", function(buckets){
   for(i in buckets){
       	var bucket = buckets[i];
		console.info(bucket.getName()+ " has been resolved, count=" +bucket.getCount());
   }
   callback.onProcessed(buckets);
});

Ceci permet d’obtenir les buckets résolus, notamment les compteurs dans le cas de buckets partiels.