/// <inheritdoc /> public ICollection <FacetItem> ExtractFacetItemList(Nest.AggregationsHelper aggs, IFacetDefinition facetDef, long total) { var facetOutput = new List <FacetItem>(); /* Valeurs renseignées. */ var agg = aggs.Filters(facetDef.Code); /* Cas où le portefeuille de l'utilisateur est vide : l'agrégation n'est pas définie */ if (agg == null) { /* On considère que tous les documents sont en dehors du portefeuille. */ facetOutput.Add(new FacetItem { Code = OutValue, Label = facetDef.ResolveLabel(OutValue), Count = total }); return(facetOutput); } /* Pour les valeurs inclus / exclus */ foreach (var facetName in new[] { InValue, OutValue }) { /* Ajoute une output s'il y a des documents sur la facet. */ var bucket = agg.NamedBucket(facetName); if (bucket.DocCount > 0) { facetOutput.Add(new FacetItem { Code = facetName, Label = facetDef.ResolveLabel(facetName), Count = bucket.DocCount }); } } return(facetOutput); }
/// <summary> /// Extrait les facets du résultat d'une requête. /// </summary> /// <param name="aggs">Aggrégations Elastic.</param> /// <param name="facetDef">Définition de la facette.</param> /// <returns>Sortie des facettes.</returns> public FacetOutput ExtractFacetOutput(Nest.AggregationsHelper aggs, IFacetDefinition facetDef) { var facetOutput = new FacetOutput(); /* Valeurs renseignées. */ var bucket = aggs.Terms(facetDef.Name); foreach (var b in bucket.Items) { facetOutput.Values.Add(new FacetItem { Code = b.Key, Label = facetDef.ResolveLabel(b.Key), Count = b.DocCount }); } /* Valeurs non renseignées. */ var missingBucket = aggs.Missing(facetDef.Name + MissingFacetPrefix); var missingCount = missingBucket.DocCount; if (missingCount > 0) { facetOutput.Values.Add(new FacetItem { Code = FacetConst.NullValue, Label = "Non renseigné", Count = missingCount }); } return(facetOutput); }
/// <inheritdoc /> public ICollection <FacetItem> ExtractFacetItemList(Nest.AggregationsHelper aggs, IFacetDefinition facetDef, long total) { var facetOutput = new List <FacetItem>(); /* Valeurs renseignées. */ var bucket = aggs.Filter(facetDef.Code).Terms(facetDef.Code); foreach (var b in bucket.Buckets) { facetOutput.Add(new FacetItem { Code = b.Key, Label = facetDef.ResolveLabel(b.Key), Count = b.DocCount ?? 0 }); } /* Valeurs non renseignées. */ var missingBucket = aggs.Filter(facetDef.Code).Missing(facetDef.Code + MissingFacetPrefix); var missingCount = missingBucket.DocCount; if (missingCount > 0) { facetOutput.Add(new FacetItem { Code = FacetConst.NullValue, Label = "focus.search.results.missing", Count = missingCount }); } return(facetOutput); }