Ejemplo n.º 1
0
        public ActionResult Hledat(Lib.Searching.DotaceSearchResult model)
        {
            if (model == null || ModelState.IsValid == false)
            {
                return(View(new Lib.Searching.DotaceSearchResult()));
            }

            var aggs = new Nest.AggregationContainerDescriptor <Dotace>()
                       .Sum("souhrn", s => s
                            .Field(f => f.DotaceCelkem)

                            );


            var res = _dotaceService.SimpleSearch(model, anyAggregation: aggs);

            Lib.Data.Audit.Add(
                Lib.Data.Audit.Operations.UserSearch
                , this.User?.Identity?.Name
                , this.Request.UserHostAddress
                , "Dotace"
                , res.IsValid ? "valid" : "invalid"
                , res.Q, res.OrigQuery);


            return(View(res));
        }
Ejemplo n.º 2
0
        /// <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))));
            });
        }
Ejemplo n.º 3
0
        /// <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)))));
        }