Exemple #1
0
        public static ITypeSearch <TSource> TermsFacetFor <TSource>(this ITypeSearch <TSource> search,
                                                                    string name,
                                                                    Type type,
                                                                    Filter filter,
                                                                    Action <FacetFilterRequest> facetRequestAction = null,
                                                                    int size = 50)
        {
            var fieldName = name;

            if (type != null)
            {
                fieldName = search.Client.GetFullFieldName(name, type);
            }
            return(new Search <TSource, IQuery>(search,
                                                context =>
            {
                var facetRequest = new TermsFacetFilterRequest(name, filter)
                {
                    Field = fieldName,
                    Size = size
                };
                if (facetRequestAction.IsNotNull())
                {
                    facetRequestAction(facetRequest);
                }
                context.RequestBody.Facets.Add(facetRequest);
            }));
        }
        public static ITypeSearch <TSource> TermsFacetFor <TSource>(
            this ITypeSearch <TSource> search,
            Expression <Func <TSource, string> > fieldSelector, Expression <Func <TSource, Filter> > filterExpression, Action <TermsFacetFilterRequest> facetRequestAction = null)
        {
            filterExpression.ValidateNotNullArgument("filterExpression");
            var filterExpressionParser = new FilterExpressionParser(search.Client.Conventions);
            var facetFilter            = filterExpressionParser.GetFilter(filterExpression);
            var facetName = fieldSelector.GetFieldPath();
            var fieldName = search.Client.Conventions.FieldNameConvention.GetFieldName(fieldSelector);

            return(new Search <TSource, IQuery>(search, context =>
            {
                var facetRequest = new TermsFacetFilterRequest(facetName, facetFilter)
                {
                    Field = fieldName
                };
                if (facetRequestAction.IsNotNull())
                {
                    facetRequestAction(facetRequest);
                }
                context.RequestBody.Facets.Add(facetRequest);
            }));
        }