Marcus Granström
Feb 12, 2014
  3818
(2 votes)

Multi Search with EPiServer Find 7.5

With the release of EPiServer 7.5 we of course also released a 7.5 version of EPiServer Find. This release includes among other things a new feature to be able to handle multiple searches in one request. It will then return an IEnumerable<SearchResults<T>>. There are several use cases for this, several queries for a specific page can now be done in one round trip. Here you see a simple example of how to do it with the api.

results = service.MultiSearch<Article>()
                .Search<Article>(x => x.For("Banana").InField(y => y.Title))
                .Search<Article>(x => x.For("Annanas").InField(y => y.Title))
                .GetResult();

In the example above both queries search in the Article type and also returns the article type. It is also possible to search in different types and return a different type. Using the projections that are very powerful in EPiServer Find.

IEnumerable<SearchResults<string>> results = service.MultiSearch<string>()
    .Search<Article, string>(x => x.For(indexedArticle.Title).InField(y => y.Title).Select(y => y.Title))
    .Search<User, string>(x => x.For(indexedUser.Name).InField(y => y.Name).Select(y => y.Name)).GetResult();

The results are always returned in the same way as they are searched for. So the first result will be the first query. Also these will of course only count as one query against the index and will hopefully save you from any problems with too many requests.

Happy Finding!

Feb 12, 2014

Comments

Petter Klang
Petter Klang Feb 12, 2014 05:05 PM

Been looking forward to this!

Good job keep it up!

Petter Klang
Petter Klang Feb 12, 2014 05:05 PM

(double post)

Feb 12, 2014 06:37 PM

Very nice! So where is this documented? I'm particularily interested in the MultiUnifiedSearch functionality.

Yauheni Aliashkevich
Yauheni Aliashkevich Mar 29, 2014 10:03 AM

Just to let you know: Multi Search fails if you use Take()/Skip() in your queries

Please login to comment.
Latest blogs
Optimizely SendGrid SMTP host is deprecated

SendGrid is a services for sending email that is included in Optimizely DXP. Previously smtp.episerver.net was the recommended SMTP server to use,...

Tomas Hensrud Gulla | Dec 4, 2022 | Syndicated blog

Hosting Optimizely CMS 12 on Docker Engine

Since Optimizely CMS can now be deployed as a Docker container, here is a demonstration of building, running and scaling an Optimizely CMS 12 site ...

Stefan Holm Olsen | Dec 4, 2022 | Syndicated blog

How to use CacheTagHelper with content areas in Optimizely CMS 12

I might be going out on a limb here - if you have a better solution, feel very free to share it!  Upgrading your Optimizely web application from .N...

Andreas J | Dec 2, 2022

The 1001st Piece in your 1000 Piece Puzzle: .NET Default Interface Functions

I was recently working with a client who wanted a reasonably large subsystem added to Optimizely that would add automated management to their...

Greg J | Nov 28, 2022 | Syndicated blog