public async Task BuildAsync <T>(QueryBuilderContext <T> ctx) where T : class, new() { string filter = ctx.Source.GetFilterExpression(); string search = ctx.Source.GetSearchExpression(); string sort = ctx.Source.GetSortExpression(); // NOTE: Calling UseScoring here to keep the query from being wrapped in a filter which happens ElasticQueryBuilderExtensions.BuildQuery if (!String.IsNullOrEmpty(filter)) { ctx.Filter &= await _parser.BuildQueryAsync(filter, ctx.SetDefaultOperator(Operator.And).UseScoring()).AnyContext(); } if (!String.IsNullOrEmpty(search)) { ctx.Query &= await _parser.BuildQueryAsync(search, ctx.SetDefaultOperator(Operator.Or).UseScoring()).AnyContext(); } if (!String.IsNullOrEmpty(sort)) { ctx.Search.Sort(await _parser.BuildSortAsync(sort, ctx).AnyContext()); } }
public async Task BuildAsync <T>(QueryBuilderContext <T> ctx) where T : class, new() { var searchQuery = ctx.GetSourceAs <ISearchQuery>(); if (searchQuery == null) { return; } if (!String.IsNullOrEmpty(searchQuery.Criteria)) { ctx.Query &= await _parser.BuildQueryAsync(searchQuery.Criteria, ctx).AnyContext(); } if (!String.IsNullOrEmpty(searchQuery.Filter)) { ctx.Filter &= await _parser.BuildFilterAsync(searchQuery.Filter, ctx).AnyContext(); } if (!String.IsNullOrEmpty(searchQuery.Sort)) { ctx.Search.Sort(await _parser.BuildSortAsync(searchQuery.Sort, ctx).AnyContext()); } }