HomeDev GuideAPI Reference
Dev GuideAPI ReferenceLegal TermsDev CommunityOptimizely AcademySubmit a ticketLog In
Dev Guide

Read async

Describe async methods for read operation

Get results

GetContentResultAsync()

Perform an asynchronous request of ITypeSearch and allow caching for your search results. When executed in context of a user without edit or admin access cacheForEditorsAndAdmins is true the search request is cached for cacheForSeconds seconds.

//single search
var result = await _searchClient.Search<MyDocument>().For("banana").GetContentResultAsync();
//multiple search
var results = await _searchClient.MultiSearch<MyDocument>()
                .Search(s1 => s1.For("banana").InField(x => x.Name))
                .Search(s2 => s2.For("strawberry").InField(x => x.SearchTitle()))
                .GetContentResultAsync();
  • Parameters:
    • Required parameters: no required parameter.
    • Optional parameters: cacheForSeconds the results will be cached in seconds, default is -1 if cacheForEditorsAndAdmins is false or 60 seconds if cacheForEditorsAndAdmins is true;
  • Return value:
    • Return type an awaitable Task<IContentResult<TContentData>> if you do a single search.
    • Return an awaitable Task<IEnumerable<IContentResult<TContentData>>> if you do a multiple search.

GetPagesResultAsync()

Perform a non-blocking search by using GetResultAsync. This will get PageData type only based on the language (auto detect).

var articalePages = await _searchClient.Search<ArticlePage>().For("alloy").GetPagesResultAsync();
  • Parameters: no required parameter.
  • Return value: return an awaitable Task<PagesResult<TPageData>> where TPageData is assignable from PageData.

GetResultAsync()

Perform an non-blocking search request to FIND backend.

var results = await _searchClient.Search<IContent>()
  .For("banana")
  .GetResultAsync();
  • Parameters: no required parameter.
  • Return Value:
    • Return an awaitable Task<SearchResults<TResult>> with normal search.
    • Return an awaitable Task<UnifiedSearchResults> if you do a UnifiedSearch.

GetAsync()

Perform a non-blocking request to retrieve the document(s), using this will help client getting the documents simultaneously.

  • Parameters: Require a document id or an IEnumerable of ids. Have some other overloading method.
  • Return value:
    • Returns an awaitable Task<TSource> if parameter is a document’s id.
    • Returns an awaitable Task<IEnumerable<GetResult<TSource>>> if parameter is an IEnumerable of id(s).
var doc = await _searchClient.GetAsync("your_existing_document_id");
var docs = await _searchClient.GetAsync(new List<int>(){1,2,3});//get documents with id=1,2,3
var mydocs = await _searchClient.GetAsync<MyDocument>(1, 2, 3);//if ClientExtensions is used.

GetWithMetaAsync()

It similars to GetAsync(), the only difference is this method returns the indexed object wrapped in a GetResult object. A typical use case for this method is retrieving the object and its version number, which you can use in optimistic concurrency checks (and update objects only if they have not changed because they are being fetched).

DeleteAsync() Perform a non-blocking delete document(s) to your index.

  • Parameters: Require a document id and type of document.
  • Return value: Return an awaitable Task<DeleteResult>.
await _searchClient.DeleteAsync<MyDocument>(123);
//or
await _searchClient.DeleteAsync(typeof(MyDocument), 123, null);

Searches

SearchAsync()

Design to perform an asynchronous search request. If your site startup depends on FIND, this could be useful while your page’s areas could load in parallel. This method is used in GetResultAsync().

  • Parameters: Require an awaitable SearchRequestBody object when you call this method directly or use GetResultAsync when use normal search.
  • Return value: Return an awaitable Task<SearchResults<TResult>>.
var docs1 = await _searchClient.Search<MyDocument>()
  .For("banana")
  .GetResultAsync();
//or you can build your own query
var criteria = new TermsQuery("tags", new FieldFilterValue[] { "vegetable", "fruits" });
var docs2 = await _searchClient.SearchAsync<MyDocument>(new SearchRequestBody(){Query=criteria}, cmd=> cmd.LanguageRouting = "en");

MultiSearchAsync()

Similar the SearchAsync this method perform a non-blocking request of multiple searches. This method is used in GetContentResultAsync().

  • Parameters: Require an IEnumerable of SearchRequestBody or just call to GetContentResultAsync.
  • Return value:
    • Returns an awaitable Task<IEnumerable<SearchResults<TResult>>> when you call to MultiSearchAsync directly.
    • Returns an awaitable Task<IEnumerable<IContentResult<TContentData>>> when call to GetContentResultAsync.
var docs= await _searchClient.MultiSearch<MyDocument>()
  .Search<IContent>(x => x.For("banana").InField(f => f.Name))
  .Search<IContent>(x => x.For("apple").InField(f => f.Name))
  .GetContentResultAsync();

SearchForTypeAsync()

Like SearchAsync, this method is used for searching documents of a type.

  • Parameters: Require a SearchRequestBody.
  • Return value: Return an awaitable Task<SearchResults<TResult>>.
var searchRequest = new SearchRequestBody();
searchRequest.Query = new QueryStringQuery("Bacon");
searchRequest.Highlight.Fields.Add(fieldName);
searchResult= await _searchClient.SearchForTypeAsync<MyDocument>(searchRequest, null);

Statistics

GetAutocompleteAsync()/StatisticsAutocompleteAsync()

Perform a non-blocking request to get autocomplete list by a prefix string. This is used in StatisticsAutocompleteAsync when using Find.Statistics extensions.

  • Parameters:
    • Required parameters: Prefix string parameter is required.
    • Optional parameter: Size and Tags are optional parameters.
  • Return value: Return an awaitable Task<AutocompleteResult> contains list of autocomplete in AutocompleteResult object.
await _searchClient.Statistics().StatisticsAutocompleteAsync("prefix",size=5);

GetDidYouMeanAsync()/StatisticsDidYouMeanAsync()

Perform a non-blocking request to get list of related query. Use StatisticsDidYouMeanAsync as the same functionality when using Find.Statistics extensions.

  • Parameters:
    • Required parameters: A query string is required.
    • Optional parameter: Size and Tags are optional parameters.
  • Return value: Return an awaitable Task<DidYouMeanResult> contains list of didyoumean items in DidYouMeanResult object.
await _searchClient.Statistics().StatisticsDidYouMeanAsync("fruits",size=3);

GetSpellcheckAsync()/StatisticsSpellcheckAsync()

Perform a non-blocking request to check spelling of a query. Use StatisticsSpellcheckAsync as the same functionality when using Find.Statistics extensions.

  • Parameters:
    • Required parameters: A query string is required.
    • Optional parameter: Size and Tags are optional parameters.
  • Return value: Return an awaitable Task<SpellcheckResult>.
await _searchClient.Statistics().StatisticsSpellcheckAsync("banan",size=1);