Esempio n. 1
0
        public virtual SearchResult <SearchableBase> Search(SearchTextQuery query)
        {
            var searchRequest = GetSearchDescriptor()
                                .Query(q =>
                                       q.Bool(b => b
                                              .Should(GetQueryContainers(query.Text))
                                              .MinimumShouldMatch(MinimumShouldMatch.Fixed(MinimumShouldMatches))))
                                .PostFilter(pf => pf.Bool(b => b.Must(GetSearchPostFilters(query))));

            ApplyAggregations(searchRequest, query);

            _searchSorting.Apply(searchRequest, query);

            _searchPagingHelper.Apply(searchRequest, query);

            if (query.ApplyHighlights)
            {
                ApplyHighlight(searchRequest);
            }

            var queryResult  = _elasticSearchRepository.SearchByIndex(searchRequest);
            var searchResult = ParseResults(queryResult);

            return(searchResult);
        }
Esempio n. 2
0
 protected virtual void SortByMemberGroupRights(SearchDescriptor <T> searchDescriptor, MemberSearchQuery query)
 {
     _searchSortingHelper.Apply(searchDescriptor, query);
     if (query.GroupId.HasValue)
     {
         searchDescriptor.Sort(s => s
                               .Field(f => f
                                      .Field(ff => ff.Groups.First().IsAdmin)
                                      .NestedPath(np => np.Groups)
                                      .NestedFilter(nf => nf.Term(t => t.Field(ff => ff.Groups.First().GroupId).Value(query.GroupId)))
                                      .Descending()
                                      ));
     }
 }
Esempio n. 3
0
 protected virtual void SortByMemberGroupRights(SearchDescriptor <T> searchDescriptor, MemberSearchQuery query)
 {
     if (query.GroupId.HasValue)
     {
         searchDescriptor.Sort(s => s
                               .Field(f => f
                                      .Field(ff => ff.Groups.First().IsAdmin)
                                      .NestedPath(np => np.Groups)
                                      .NestedFilter(nf => nf.Term(t => t.Field(ff => ff.Groups.First().GroupId).Value(query.GroupId)))
                                      .Descending())
                               //.Field(f => $"{f.FullName}.{ElasticHelpers.Normalizer.Sort}", SortOrder.Ascending)); // i left it over here because it is not working case (for some reasons)
                               .Field($"{ElasticHelpers.FullName}.{ElasticHelpers.Normalizer.Sort}", SortOrder.Ascending));
     }
     else
     {
         _searchSortingHelper.Apply(searchDescriptor, query);
     }
 }