Session: Querying: How to use search?

More complex text searching can be achieved by using search extension method. This method allows you to pass one or more search terms that will be used in searching process for a particular field (or fields).

Syntax

public IRavenQueryable<T> search(Path<?> fieldSelector, String searchTerms);

public IRavenQueryable<T> search(Path<?> fieldSelector, String searchTerms, double boost);

public IRavenQueryable<T> search(Path<?> fieldSelector, String searchTerms, double boost, SearchOptionsSet searchOptions);

public IRavenQueryable<T> search(Path<?> fieldSelector, String searchTerms, double boost, SearchOptionsSet searchOptions, EscapeQueryOptions escapeQueryOptions);
Parameters
fieldSelector Path Expression marking a field in which terms should be looked for.
searchTerms String Space separated terms e.g. 'John Adam' means that we will look in selected field for 'John' or 'Adam'.
boost double Boost value. Default: 1.
options SearchOptions Explicitly set relation between each Search functions. One of the following: Or, And, Not, Guess. Default: SearchOptions.Guess.
escapeQueryOptions EscapeQueryOptions Terms escaping strategy. One of the following: EscapeAll, AllowPostfixWildcard, AllowAllWildcards, RawQuery. Default: EscapeQueryOptions.EscapeAll.
Return Value
IRavenQueryable Instance implementing IRavenQueryable interface containing additional query methods and extensions.

Example I

QHowToUseSearch_User u = QHowToUseSearch_User.user;
List<User> users = session
  .query(User.class, "Users/ByNameAndHobbies")
  .search(u.name, "Adam")
  .search(u.hobbies, "sport")
  .toList();

Example II

QHowToUseSearch_User u = QHowToUseSearch_User.user;
List<User> users = session
  .query(User.class, "Users/ByNameAndHobbies")
  .search(u.hobbies, "I love sport", 10)
  .search(u.hobbies, "but also like reading books", 5)
  .toList();