public void Check_FacetSelection() { var facetsInput = new FacetListInput(); facetsInput[GenreFacet] = new[] { "F" }; CheckFacets(2, facetsInput); }
public void Check_FacetNullSelection() { var facetsInput = new FacetListInput(); facetsInput[GenreFacet] = new[] { FacetConst.NullValue }; CheckFacets(1, facetsInput); }
public void Check_PortfolioFacetSelectionNonPortfolioNull() { var facetsInput = new FacetListInput(); facetsInput[DepartementFacet] = new[] { "0" }; CheckWithNoPortfolio(facetsInput, string.Empty); }
public void Check_FacetNullSelection() { var facetsInput = new FacetListInput(); facetsInput[GenreFacet] = FacetConst.NullValue; var output = CheckFacets(facetsInput); /* Total. */ Assert.AreEqual(1, output.List.Count, "Nombre de résultats attendu incorrect."); Assert.AreEqual(1, output.TotalCount, "Nombre total de résultats attendu incorrect."); }
public void Check_PortfolioFacetSelectionNon() { var facetsInput = new FacetListInput(); facetsInput[DepartementFacet] = new[] { "0" }; var output = CheckFacets(facetsInput, portfolio: "02 03"); /* Total. */ Assert.AreEqual(4, output.List.Count, "Nombre de résultats attendu incorrect."); Assert.AreEqual(4, output.TotalCount, "Nombre total de résultats attendu incorrect."); }
public void Check_InitialQueryFacet() { var facetsInput = new FacetListInput(); var output = CheckFacets(facetsInput); Assert.IsNotNull(output); /* Total. */ Assert.AreEqual(6, output.List.Count, "Nombre de résultats attendu incorrect."); Assert.AreEqual(6, output.TotalCount, "Nombre de résultats attendu incorrect."); /* Facettes */ var facetsOutput = output.Facets; Assert.IsNotNull(facetsOutput, "Facettes non null attendues."); Assert.AreEqual(1, facetsOutput.Count, "Nombre de facettes attendu incorrect."); var facet = facetsOutput.FirstOrDefault(d => d.Key == GenreFacet); var facetOutput = facet.Value; Assert.IsNotNull(facet.Key, "Facette genre manquante."); Assert.IsNotNull(facetOutput, "Valeur de facette attendue."); Assert.AreEqual(3, facetOutput.Count, "Nombre de genre."); foreach (var value in facetOutput) { var s = value.Code; var v = value.Count; switch (s) { case "M": Assert.AreEqual(3, v); break; case "F": Assert.AreEqual(2, v); break; case FacetConst.NullValue: Assert.AreEqual(1, v); break; default: Assert.Fail("Clée inattendue : " + v); break; } } }
public void Check_PortfolioInitialQueryFacet() { var facetsInput = new FacetListInput(); var output = CheckFacets(facetsInput, portfolio: "02 03"); Assert.IsNotNull(output); /* Total. */ Assert.AreEqual(6, output.List.Count, "Nombre de résultats attendu incorrect."); Assert.AreEqual(6, output.TotalCount, "Nombre de résultats attendu incorrect."); /* Facettes */ var facetsOutput = output.Facets; Assert.IsNotNull(facetsOutput, "Facettes non null attendues."); Assert.AreEqual(1, facetsOutput.Count, "Nombre de facettes attendu incorrect."); var facet = facetsOutput.FirstOrDefault(d => d.Code == DepartementFacet); var facetOutput = facet.Values; Assert.IsNotNull(facet.Code, "Facette portfolio manquante."); Assert.IsNotNull(facetOutput, "Valeur de facette attendue."); Assert.AreEqual(2, facetOutput.Count, "Nombre de valeurs de facettes."); foreach (var value in facetOutput) { var s = value.Code; var v = value.Count; switch (s) { case "0": Assert.AreEqual(4, v); break; case "1": Assert.AreEqual(2, v); break; default: Assert.Fail("Clée inattendue : " + v); break; } } }
private static QueryOutput <PersonneDocument> CheckFacets(FacetListInput facetsInput, string query = null) { var facetQueryDefinition = new FacetQueryDefinition(new BooleanFacet { Name = GenreFacet, FieldName = GenreField }); var input = new AdvancedQueryInput { ApiInput = new QueryInput { Criteria = new Criteria { Query = query }, Skip = 0, Top = 10, Facets = facetsInput, }, FacetQueryDefinition = facetQueryDefinition }; var broker = SearchBrokerManager.GetBroker <PersonneDocument>(); return(broker.AdvancedQuery(input)); }
private static void CheckFacets(long expected, FacetListInput facetsInput, string query = null) { var facetQueryDefinition = new FacetQueryDefinition(new BooleanFacet { Code = GenreFacet, FieldName = GenreField }); var input = new AdvancedQueryInput { ApiInput = new QueryInput { Criteria = new Criteria { Query = query }, Skip = 0, Top = 10, Facets = facetsInput, }, FacetQueryDefinition = facetQueryDefinition }; var broker = SearchBrokerManager.GetBroker <PersonneDocument>(); var actual = broker.AdvancedCount(input); Assert.AreEqual(expected, actual, "Le compte n'est pas bon."); }
private static QueryOutput <PersonneDocument> CheckFacets(FacetListInput facetsInput, string query = null, string security = null, string portfolio = null) { var facetQueryDefinition = new FacetQueryDefinition(new PortfolioFacet { Code = DepartementFacet, FieldName = DepartementField }); var input = new AdvancedQueryInput { ApiInput = new QueryInput { Criteria = new Criteria { Query = query }, Skip = 0, Top = 10, Facets = facetsInput, }, FacetQueryDefinition = facetQueryDefinition, Security = security, Portfolio = portfolio }; var broker = SearchBrokerManager.GetBroker <PersonneDocument>(); return(broker.AdvancedQuery(input)); }
private static void CheckWithNoPortfolio(FacetListInput facetsInput, string portfolio) { var output = CheckFacets(facetsInput, portfolio: portfolio); /* Total. */ Assert.AreEqual(6, output.List.Count, "Nombre de résultats attendu incorrect."); Assert.AreEqual(6, output.TotalCount, "Nombre total de résultats attendu incorrect."); /* Facettes */ var facetsOutput = output.Facets; Assert.IsNotNull(facetsOutput, "Facettes non null attendues."); Assert.AreEqual(1, facetsOutput.Count, "Nombre de facettes attendu incorrect."); var facet = facetsOutput.FirstOrDefault(d => d.Code == DepartementFacet); var facetOutput = facet.Values; Assert.IsNotNull(facet.Code, "Facette portfolio manquante."); Assert.IsNotNull(facetOutput, "Valeur de facette attendue."); Assert.AreEqual(1, facetOutput.Count, "Nombre de valeurs de facettes."); foreach (var value in facetOutput) { var s = value.Code; var v = value.Count; switch (s) { case "0": Assert.AreEqual(6, v); break; default: Assert.Fail("Clée inattendue : " + v); break; } } }
/// <inheritdoc/> public void DefineAggregation(Nest.AggregationContainerDescriptor <TDocument> agg, IFacetDefinition facet, ICollection <IFacetDefinition> facetList, FacetListInput selectedFacets, string portfolio) { /* Récupère le nom du champ. */ var fieldName = _document.Fields[facet.FieldName].FieldName; /* On construit la requête de filtrage sur les autres facettes multi-sélectionnables. */ var filterQuery = FacetingUtil.BuildMultiSelectableFacetFilter(_builder, facet, facetList, selectedFacets, CreateFacetSubQuery); var hasFilterQuery = !string.IsNullOrEmpty(filterQuery); agg.Filter(facet.Code, f => { if (hasFilterQuery) { /* Crée le filtre sur les facettes multi-sélectionnables. */ f.Filter(q => q.QueryString(qs => qs.Query(filterQuery))); } return(f.Aggregations(aa => aa /* Créé une agrégation sur les valeurs discrètes du champ. */ .Terms(facet.Code, st => st.Field(fieldName).Size(50)) /* Créé une agrégation pour les valeurs non renseignées du champ. */ .Missing(facet.Code + MissingFacetPrefix, ad => ad.Field(fieldName)))); }); }
public void Check_FacetNoEmptyValueFacet() { var facetsInput = new FacetListInput(); CheckFacets(1, facetsInput, "MARCHAND"); }
/// <inheritdoc/> public void DefineAggregation(Nest.AggregationContainerDescriptor <TDocument> agg, IFacetDefinition facet, ICollection <IFacetDefinition> facetList, FacetListInput selectedFacets, string portfolio) { if (string.IsNullOrEmpty(portfolio)) { /* Portefeuille de l'utilisateur vide : on ne définit pas d'agregations. */ return; } /* Récupère le nom du champ. */ string fieldName = _document.Fields[facet.FieldName].FieldName; /* On construit la requête de filtrage sur les autres facettes multi-sélectionnables. */ var filterQuery = FacetingUtil.BuildMultiSelectableFacetFilter(_builder, facet, facetList, selectedFacets, CreateFacetSubQuery); /* Créé une agrégation avec deux buckets. */ var inQuery = _builder.BuildAndQuery(_builder.BuildInclusiveInclude(fieldName, portfolio), filterQuery); var outQuery = _builder.BuildAndQuery(_builder.BuildExcludeQuery(fieldName, portfolio), filterQuery); agg.Filters(facet.Code, st => st.NamedFilters(x => x /* Une pour les documents dans le portefeuille */ .Filter(InValue, d => d.QueryString(query => query.Query(inQuery))) /* Une pour les documents absents du portefeuille */ .Filter(OutValue, d => d.QueryString(query => query.Query(outQuery))))); }
public void Check_InitialQueryFacet() { var facetsInput = new FacetListInput(); CheckFacets(6, facetsInput); }
/// <summary> /// Crée le filtre pour une facette sur les autres facettes multi-sélectionnables. /// </summary> /// <param name="builder">Query builder.</param> /// <param name="facet">Facette.</param> /// <param name="facetList">Liste des facettes.</param> /// <param name="selectedFacets">Facettes sélectionnées.</param> /// <param name="facetQueryBuilder">Builder de requête pour une facette.</param> /// <returns>La filtre.</returns> public static string BuildMultiSelectableFacetFilter(ElasticQueryBuilder builder, IFacetDefinition facet, ICollection <IFacetDefinition> facetList, FacetListInput selectedFacets, Func <string, IFacetDefinition, string, string> facetQueryBuilder) { return(builder.BuildAndQuery(selectedFacets? .Select(sf => { /* On ne filtre pas sur la facette en cours. */ if (sf.Key == facet.Code) { return null; } var targetFacet = facetList.Single(f => f.Code == sf.Key); /* On n'ajoute que les facettes multi-sélectionnables */ if (targetFacet.IsMultiSelectable == false) { return null; } return builder.BuildOrQuery(sf.Value .Select(v => facetQueryBuilder(v, targetFacet, null)) .ToArray()); }) .Where(sf => sf != null) .ToArray())); }
public void Check_PortfolioFacetPortfolioEmpty() { var facetsInput = new FacetListInput(); CheckWithNoPortfolio(facetsInput, string.Empty); }
public void Check_PortfolioFacetPortfolioNull() { var facetsInput = new FacetListInput(); CheckWithNoPortfolio(facetsInput, null); }