Dataverse Search suggest
Use this API to support a richer search box experience. For example, as the user enters each character of their search term, call this API and populate the dropdown list of the search field with the suggested query results.
In addition to a search term, the results returned can be influenced by passing values for the following parameters:
Name | Type | Description | More information |
---|---|---|---|
search |
string | Required. The text to search with. | search parameter |
entities |
string | The default is searching across all search–configured entities. | entities parameter |
filter |
string | Filter criteria to reduce results returned. | filter parameter |
fuzzy |
bool | Use fuzzy search to aid with misspellings. The default is false. | fuzzy parameter |
options |
string | Options are settings configured to search a search term. For example "{ 'advancedsuggestenabled': 'true' }" . |
options parameter |
orderby |
string | List of comma-separated clauses where each clause is an attribute name followed by asc or desc . |
orderby parameter |
top |
int | Number of suggestions to retrieve. The default is 5. | top parameter |
Parameters
This section contains details about the parameters introduced by the table above.
search
parameter
Type: string
Optional: false
The text to search with. Search term must be at least three characters long and has a 100 character limit.
entities
parameter
Type: string
Optional: true
The default is searching across all search–configured entities. Use this property to narrow the results.
filter
parameter
Type: string
Optional: true
Filter criteria to reduce results returned based on records that match the filter criteria.
fuzzy
parameter
Type: bool
Optional: true
Use fuzzy search to aid with misspellings. The default is false.
options
parameter
Type: string
Optional: true
Options are settings configured to search a search term. Valid options for suggest query is:
"{ 'advancedsuggestenabled': 'true' }"
.
orderby
parameter
Type: string
Optional: true
List of comma-separated clauses where each clause is an attribute name followed by asc
or desc
.
top
parameter
Type: int
Optional: true
Number of suggestions to retrieve. The default is 5.
Response
The response from the suggest operation is an escaped string that includes JSON data.
The unescaped response contains JSON using the following properties.
Name | Type | Description |
---|---|---|
Error |
ErrorDetail | Provides error information from Azure Cognitive search. |
Value |
SuggestResult [] |
A collection of matching records. |
QueryContext |
QueryContext | The query context returned as part of response. This property is used for backend search. It's included for future feature releases and isn't currently used. |
Response Types
The response returns the following types:
ErrorDetail
This is the same ErrorDetail returned by the query API.
SuggestResult
Provides the suggested text.
Name | Type | Description |
---|---|---|
Text |
string | Provides the suggested text. |
Document |
Dictionary<string, object> |
The document. |
QueryContext
This is the same QueryContext returned by the query API.
Examples
The following examples show how to use the suggest operation. Each of these examples pass the value "Cont" as the search parameter and request the top three suggestions.
This example is from the SDK for .NET search operations sample on GitHub. The static OutputSearchSuggest
method returns the top three suggestions for any search term.
/// <summary>
/// Demonstrate suggest API
/// </summary>
/// <param name="service">The authenticated IOrganizationService instance to use.</param>
/// <param name="searchTerm">The term to use</param>
/// <returns></returns>
static void OutputSearchSuggest(IOrganizationService service, string searchTerm)
{
Console.WriteLine("OutputSearchSuggest START\n");
searchsuggestRequest request = new()
{
search = searchTerm,
top = 3
};
var searchsuggestResponse = (searchsuggestResponse)service.Execute(request);
SearchSuggestResults results = JsonConvert.DeserializeObject<SearchSuggestResults>(searchsuggestResponse.response);
results.Value?.ForEach(suggestion =>
{
Console.WriteLine($"\tText:{suggestion.Text}");
Console.WriteLine("\tDocument: ");
foreach (string key in suggestion.Document.Keys)
{
Console.WriteLine($"\t\t{key}: {suggestion.Document[key]}");
}
Console.WriteLine();
});
Console.WriteLine("OutputSearchSuggest END\n");
}
Output
When you invoke the OutputSearchSuggest
method with an authenticated instance of the ServiceClient class with the searchTerm
set to "Cont":
OutputSearchSuggest(service: serviceClient, searchTerm: "Cont");
The output looks something like the following:
OutputSearchSuggest START
Text:{crmhit}cont{/crmhit}act
Document:
@search.objectid: aaaaaaaa-0000-1111-2222-bbbbbbbbbbbb
@search.entityname: contact
@search.objecttypecode: 2
fullname: Yvonne McKay (sample)
Text:{crmhit}cont{/crmhit}act
Document:
@search.objectid: bbbbbbbb-1111-2222-3333-cccccccccccc
@search.entityname: contact
@search.objecttypecode: 2
fullname: Susanna Stubberod (sample)
Text:{crmhit}cont{/crmhit}act
Document:
@search.objectid: cccccccc-2222-3333-4444-dddddddddddd
@search.entityname: contact
@search.objecttypecode: 2
fullname: Nancy Anderson (sample)
OutputSearchSuggest END
Supporting classes
The OutputSearchSuggest
method depends on the following supporting classes to send the request and process the result.
searchsuggestRequest and searchsuggestResponse classes
These classes are generated using Power Platform CLI pac modelbuilder build command as described in Generate early-bound classes for the SDK for .NET.
ErrorDetail class
This class is the same ErrorDetail
class used for the query example.
SuggestResults class
Used to deserialize the data from the searchsuggestResponse.response
property
class SearchSuggestResults
{
/// <summary>
/// Provides error information from Azure Cognitive search.
/// </summary>
[JsonProperty(PropertyName = "Error")]
public ErrorDetail? Error { get; set; }
/// <summary>
/// A collection of matching records.
/// </summary>
public List<SuggestResult>? Value { get; set; }
/// <summary>
/// The query context returned as part of response. This property is used for backend search, this is included for future feature releases, it is not currently used.
/// </summary>
public QueryContext? QueryContext { get; set; }
}
SuggestResult class
Result object for suggest results.
public sealed class SuggestResult
{
/// <summary>
/// Gets or sets the text.
/// </summary>
[JsonProperty(PropertyName = "text")]
public string Text { get; set; }
/// <summary>
/// Gets or sets document.
/// </summary>
[JsonProperty(PropertyName = "document")]
public Dictionary<string, object> Document { get; set; }
}
QueryContext class
This class is the same QueryContext
class used for the query example.
See also
Search for Dataverse records
Dataverse Search query
Dataverse Search autocomplete
Dataverse Search statistics and status
Dataverse legacy search