public static IEnumerable <SearchResults <TResult> > GetDynamicResult <TResult>( this IMultiSearch <TResult> multiSearch) { var unprojectedSearches = multiSearch.Searches.ToList(); multiSearch.Searches.Clear(); foreach (var originalSearch in unprojectedSearches) { var projectedSearch = originalSearch; var searchContext = new SearchContext(); projectedSearch.ApplyActions(searchContext); if (searchContext.Projections.Count == 0) { if (originalSearch is ITypeSearch <IContent> ) { var search = originalSearch as ITypeSearch <IContent>; if (typeof(IContent).IsAssignableFrom(typeof(IContent))) { search = search.Filter(x => ((IContentData)x).MatchTypeHierarchy(typeof(IContent))); } ISearch <ContentInLanguageReference> contentInLanguageReferenceSearch = search.Select(x => new ContentInLanguageReference(new ContentReference(x.ContentLink.ID, x.ContentLink.ProviderName), ((ILocalizable)x).Language.Name)); projectedSearch = contentInLanguageReferenceSearch as ITypeSearch <TResult>; } else { projectedSearch = (projectedSearch as ITypeSearch <TResult>).Select(x => x); } } multiSearch.Searches.Add(projectedSearch); } return(multiSearch.GetResult()); }
public SuperQueryManager() { _multiSearch = new MultiSearch(); _rankAggregation = new RankAggregation.RankAggregation(); }
protected virtual void AddToMultiSearch(IMultiSearch <IFacetContent> multSearch, ITypeSearch <object> typeSearch) { multSearch.Searches.Add(typeSearch.Select(x => new FacetContent()).Take(0)); }
public static IMultiSearch <dynamic> Search <TSource>(this IMultiSearch <dynamic> multiSearch, Func <ITypeSearch <TSource>, ISearch <dynamic> > searchFunction) { return(multiSearch.Search(Language.None, searchFunction)); }
public static IMultiSearch <dynamic> Search <TSource>(this IMultiSearch <dynamic> multiSearch, Language language, Func <ITypeSearch <TSource>, ISearch <dynamic> > searchFunction) { return(MultiSearchExtensions.Search(multiSearch, language, searchFunction)); }