HomeDev GuideAPI Reference
Dev GuideAPI ReferenceUser GuideGitHubNuGetDev CommunityDoc feedbackLog In
GitHubNuGetDev CommunityDoc feedback

You typically use the `For` method to search for phrases or keywords in indexed documents. For instance, to search for blog posts that contain _car_, use the code in the following examples.

Typically, a search query is fetched from user input.

## Search fields

By default, a search query using the `For` method is performed against a field named _\_all_. The field is generated when an object is indexed, and it is made up of all of the document's fields combined.

Search queries should specify fields using the `InField`, `AndInField` and `InFields` methods. These methods expect a lambda expression, which retrieves the field name. For example, this code searches the **Title** field of blog posts.

To also search the **Content **field, add a second `InField` method.

Alternatively, you can use the `InFields` method or the `AndInField` method. Their usage is demonstrated below.

If one or more fields are specified using the methods described above, the search is no longer performed against the **All **field. However, you can explicitly request the search to use the InAllField method.

## Stem words

Stemming is the process of reducing a word to its root form. When using stemming in free text search, words with similar meanings, such as _car_ and _cars_, match.

Stemming is language-dependent, so you need to tell the search engine the language in which you are searching. To do this, pass an instance of the `Language` class to the Clients `Search` method. Instances of the `Language` class that match supported languages are available as static properties on the `Language` class.


Search with the **All** field cannot use stemming. This means that, for the language parameter to have any effect, you must specify search fields (such as `InField`) using methods described above. Below is a sample search request for _cars_that matches blog posts titled \_car_ or _A blue car_.

Often, you want to search several known fields with stemming but also match text that is not in those fields. Although the **All **field does not support stemming, you can still search for it when using stemming. You can use the following code to search the **Title **and **Content** fields for blog posts and still match blog posts that do not contain the word _cars_ in their **Title** or **Content** fields but do have the word in another field (such as tags).

## Use AND as operator in multi-word queries

You can configure the free text search to use "AND" as an operator instead of the default "OR" to match search terms minus stop words in multi-word queries. For example, searching for "houses in Stockholm" may return many irrelevant results for "houses."

To avoid this, you can use `WithAndAsDefaultOperator()` after a method that returns `IQueriedSearch<T>`, such as `For()`.

This will only return results matching "houses" and "Stockholm."