You are looking at documentation for an older release.
Not what you want? See the
current release documentation.
Suggest Usageedit
The suggest feature suggests similar looking terms based on a provided text by using a suggester.
See the Elasticsearch documentation on Suggesters for more detail.
Fluent DSL Exampleedit
s => s .Suggest(ss => ss .Term("my-term-suggest", t => t .MaxEdits(1) .MaxInspections(2) .MaxTermFrequency(3) .MinDocFrequency(4) .MinWordLength(5) .PrefixLength(6) .SuggestMode(SuggestMode.Always) .Analyzer("standard") .Field(p => p.Name) .ShardSize(7) .Size(8) .Text("hello world") ) .Completion("my-completion-suggest", c => c .Context(ctx => ctx .Add("color", Project.Projects.First().Suggest.Context.Values.SelectMany(v => v).First()) ) .Fuzzy(f => f .Fuzziness(Fuzziness.Auto) .MinLength(1) .PrefixLength(2) .Transpositions() .UnicodeAware(false) ) .Analyzer("simple") .Field(p => p.Suggest) .ShardSize(7) .Size(8) .Text(Project.Instance.Name) ) .Phrase("my-phrase-suggest", ph => ph .Collate(c => c .Query(q => q .Inline("{ \"match\": { \"{{field_name}}\": \"{{suggestion}}\" }}") .Params(p => p.Add("field_name", "title")) ) .Prune() ) .Confidence(10.1) .DirectGenerator(d => d .Field(p => p.Description) ) .GramSize(1) .Field(p => p.Name) .Text("hello world") .RealWordErrorLikelihood(0.5) ) )
Object Initializer Syntax Exampleedit
new SearchRequest<Project> { Suggest = new SuggestContainer { { "my-term-suggest", new SuggestBucket { Text = "hello world", Term = new TermSuggester { MaxEdits = 1, MaxInspections = 2, MaxTermFrequency = 3, MinDocFrequency = 4, MinWordLen = 5, PrefixLen = 6, SuggestMode = SuggestMode.Always, Analyzer = "standard", Field = Field<Project>(p=>p.Name), ShardSize = 7, Size = 8 } } }, { "my-completion-suggest", new SuggestBucket { Text = Project.Instance.Name, Completion = new CompletionSuggester { Context = new Dictionary<string, object> { { "color", Project.Projects.First().Suggest.Context.Values.SelectMany(v => v).First() } }, Fuzzy = new FuzzySuggester { Fuzziness = Fuzziness.Auto, MinLength = 1, PrefixLength = 2, Transpositions = true, UnicodeAware = false }, Analyzer = "simple", Field = Field<Project>(p=>p.Suggest), ShardSize = 7, Size = 8 } } }, { "my-phrase-suggest", new SuggestBucket { Text = "hello world", Phrase = new PhraseSuggester { Collate = new PhraseSuggestCollate { Query = new InlineScript("{ \"match\": { \"{{field_name}}\": \"{{suggestion}}\" }}") { Params = new Dictionary<string, object> { { "field_name", "title" } } }, Prune = true }, Confidence = 10.1, DirectGenerator = new List<DirectGenerator> { new DirectGenerator { Field = "description" } }, GramSize = 1, Field = "name", RealWordErrorLikelihood = 0.5 } } }, } }
Example json output.
{ "suggest": { "my-completion-suggest": { "completion": { "analyzer": "simple", "context": { "color": "red" }, "field": "suggest", "fuzzy": { "fuzziness": "AUTO", "min_length": 1, "prefix_length": 2, "transpositions": true, "unicode_aware": false }, "shard_size": 7, "size": 8 }, "text": "Durgan LLC" }, "my-phrase-suggest": { "phrase": { "collate": { "query": { "inline": "{ \"match\": { \"{{field_name}}\": \"{{suggestion}}\" }}", "params": { "field_name": "title" } }, "prune": true }, "confidence": 10.1, "direct_generator": [ { "field": "description" } ], "field": "name", "gram_size": 1, "real_word_error_likelihood": 0.5 }, "text": "hello world" }, "my-term-suggest": { "term": { "analyzer": "standard", "field": "name", "max_edits": 1, "max_inspections": 2, "max_term_freq": 3.0, "min_doc_freq": 4.0, "min_word_len": 5, "prefix_len": 6, "shard_size": 7, "size": 8, "suggest_mode": "always" }, "text": "hello world" } } }
Handling Responsesedit
var myCompletionSuggest = response.Suggest["my-completion-suggest"]; myCompletionSuggest.Should().NotBeNull(); var suggest = myCompletionSuggest.First(); suggest.Text.Should().Be(Project.Instance.Name); suggest.Length.Should().BeGreaterThan(0); var option = suggest.Options.First(); option.Text.Should().NotBeNullOrEmpty(); option.Score.Should().BeGreaterThan(0); var payload = option.Payload<ProjectPayload>(); payload.Should().NotBeNull(); payload.Name.Should().Be(Project.Instance.Name); payload.State.Should().NotBeNull();