Dynamic Multi Search for EPiServer Find
EPiServer Find’s MultiSearch is great, but has a couple of limitations: All searches need to have a common return type, and IContent searches has to be projected to avoid deserialization errors.
EPiCode.DynamicMultiSearch removes these limitations.
How it works:
Invoke DynamicMultiSearch and GetDynamicResult to retrieve the result sets
IEnumerable<SearchResults<dynamic>> result = client.DynamicMultiSearch()
.Search<Product>(x => x.Filter(p => p.ProductTypeId.Match(5)))
.Search<ArticlePage>(Language.English, x => x.For("lemon")) // works with IContent
.Search<Book>(x => x.Filter(b => b.Title.AnyWordBeginsWith("lemon")).Skip(20).Take(20)) // individual skip and take per query
.Search<Person>(x => x.For("Per Magne").Select(p => p.Name)) // works with projections
Use GetResultSet to retrieve the result set, which accepts an int. This number should match the order in which the search was added
var products = result.GetResultSet<Product>(0);
var articlePages = result.GetResultSet<ArticlePage>(1);
var books = result.GetResultSet<Book>(2);
var personNames = result.GetResultSet<string>(3);
Read the standard MultiSearch documentation here. If you are new to Find and stumbled across this blogpost you should check of Unified search. It might be just what you need.
Can we use statistics also with dynamic search without adverse effect to Search Without Hits Interface? :)
Edit: @K Khan, Yes, it is! Check out Mari Jørgensen's latest blog