You are currently browsing legacy 4.1 version of documentation. Click here to switch to the newest 5.1 version.
Session: Querying: How to Work with Suggestions
The suggestion
feature is available through query extension methods. It gives you the ability to find word similarities using string distance algorithms.
Syntax
ISuggestionDocumentQuery<T> suggestUsing(SuggestionBase suggestion);
ISuggestionDocumentQuery<T> suggestUsing(Consumer<ISuggestionBuilder<T>> builder);
Parameters
suggestion
SuggestionBase
Defines the type of suggestion that should be executed
builder
Consumer<ISuggestionBuilder<T>>
Builder with a fluent API that constructs a SuggestionBase
instance
Builder
ISuggestionOperations<T> byField(String fieldName, String term);
ISuggestionOperations<T> byField(String fieldName, String[] terms);
ISuggestionOperations<T> withOptions(SuggestionOptions options);
Parameters
fieldName
String
Points to the index field that should be used for operation
term
String
Term that will be used as a basis of the suggestions
terms
String[]
Terms that will be used as a basis of the suggestions
options
SuggestionOptions
Non-default options that should be used for operation
Options
private int pageSize = 15;
private StringDistanceTypes distance = StringDistanceTypes.LEVENSHTEIN;
private Float accuracy = 0.5f;
private SuggestionSortMode sortMode = SuggestionSortMode.POPULARITY;
// getters and setters for fields listed above
Options
pageSize
int
Maximum number of suggestions that will be returned
distance
StringDistanceTypes
String distance algorithm to use (NONE
, LEVENSTEIN
, JARO_WINKLER
, N_GRAM
)
accuracy
Float
Suggestion accuracy
sortMode
SuggestionSortMode
Indicates in what order the results should be returned (None
, Popularity
)
Example I
SuggestionOptions options = new SuggestionOptions();
options.setAccuracy(0.4f);
options.setPageSize(5);
options.setDistance(StringDistanceTypes.JARO_WINKLER);
options.setSortMode(SuggestionSortMode.POPULARITY);
Map<String, SuggestionResult> suggestions = session
.query(Employee.class, Employees_ByFullName.class)
.suggestUsing(builder ->
builder.byField("FullName", "johne")
.withOptions(options))
.execute();
from index 'Employees/ByFullName'
select suggest('FullName', 'johne', '{ "Accuracy" : 0.4, "PageSize" : 5, "Distance" : "JaroWinkler", "SortMode" : "Popularity" }')
Example II
SuggestionWithTerm suggestionWithTerm = new SuggestionWithTerm("FullName");
suggestionWithTerm.setTerm("johne");
Map<String, SuggestionResult> suggestions = session
.query(Employee.class, Employees_ByFullName.class)
.suggestUsing(suggestionWithTerm)
.execute();
from index 'Employees/ByFullName'
select suggest('FullName', 'johne')
Please enable JavaScript to view the comments powered by Disqus.