Loading...

Last updated: Oct 31 2016

Area: Episerver Find Applies to versions: 12 and higher
Other versions:

Strings

Use filters to narrow down search results, or use them for database-like queries. This topic explains how to filter search results based on strings, with the Filter method in Episerver Find. 

How it works

Use the Filter method to filter string fields in several ways. Below are use cases and examples illustrating the methods.

Existence

To search for documents where a string field has a value, use the Exists method. The following search finds blog posts that have a title. The following code is similar to the LINQ query Where(x => x.Title != null).

Like all filters, it can be negated using an exclamation mark (!). For xeample, to find all blog posts that lack a title, use the following code.

Exact match

For exact matching, use the Match method. The following search matches blog posts titled Find but not those titled find, fInd, Find rocks! or  Hello Find. The LINQ equivalent is Where(x => x.Title == Find).

Case insensitive match

For exact matching without regard to case, use the MatchCaseInsensitive method. The following search matches blog posts titled Find, find and fInd but not those titled Find rocks! or Hello Find. The following search is similar to the LINQ query Where(x => x.Title.ToLower() == Find.ToLower()).

Matching by beginning of a string (startsWith)

The Prefix method lets you match by the beginning of a string. The following search matches blog posts titled Find and Find rocks! but not find, Finding or Hello Find.

Use the PrefixCaseInsensitive method to match by the beginning of a string in a case-insensitive way. The following search matches blog posts titled Find, Find rocks! and Find but not Finding or Hello Find.

Matching by beginning of any word (wildcard, autocomplete)

In some situations, such as when building autocomplete or search-as-you-type functionality, you want to filter on whether any word in a string starts with a certain string. Achieve this with the AnyWordBeginsWith method.

The above query matches blog posts titled Banana, banana, Banana split or Yellow bananas. It does not match blog posts titled Abandon, because no word in that title starts with ban (although it contains those characters).

Note: While the Match and Prefix methods are case-sensitive and have case-insensitive counterparts, the AnyWordBeginsWith method is not case-sensitive and has no case-sensitive counterpart.

Matching by range

The InRange method lets you filter on string fields that match a specific range. For instance, the following search matches blog posts titled A, Aa, and B but not those titled Bb or C.

Matching by a set of values

The In method filters on string fields that match an explicit list of values. For instance, the following search matches blog entries titled A, B and C.

Filtering on string collections

You also can use the Exists, Match, In and MatchCaseInsensitive methods for properties that implement IEnumerable<string>. The following search uses Exists and matches blog posts that have at least one tag.

The following search matches any blog post that has the tag Find. It does not limit the results to only blog posts tagged with Find.


Do you have feedback on this documentation? Send an email to documentation@episerver.com. For development-related questions and discussions, refer to our Forums on https://world.episerver.com/forum/