Skip to content

Commit 8e2aab9

Browse files
russcamMpdreamz
authored andcommitted
Add token_limit and force_unigrams to phrase suggest (#3112)
Closes #3109
1 parent 65fcc42 commit 8e2aab9

File tree

2 files changed

+22
-2
lines changed

2 files changed

+22
-2
lines changed

src/Nest/Search/Suggesters/PhraseSuggester/PhraseSuggester.cs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -41,6 +41,12 @@ public interface IPhraseSuggester : ISuggester
4141

4242
[JsonProperty("smoothing")]
4343
SmoothingModelContainer Smoothing { get; set; }
44+
45+
[JsonProperty("token_limit")]
46+
int? TokenLimit { get; set; }
47+
48+
[JsonProperty("force_unigrams")]
49+
bool? ForceUnigrams { get; set; }
4450
}
4551

4652
public class PhraseSuggester : SuggesterBase, IPhraseSuggester
@@ -56,6 +62,8 @@ public class PhraseSuggester : SuggesterBase, IPhraseSuggester
5662
public IPhraseSuggestHighlight Highlight { get; set; }
5763
public IPhraseSuggestCollate Collate { get; set; }
5864
public SmoothingModelContainer Smoothing { get; set; }
65+
public int? TokenLimit { get; set; }
66+
public bool? ForceUnigrams { get; set; }
5967
}
6068

6169
public class PhraseSuggesterDescriptor<T> : SuggestDescriptorBase<PhraseSuggesterDescriptor<T>, IPhraseSuggester, T>, IPhraseSuggester
@@ -72,6 +80,8 @@ public class PhraseSuggesterDescriptor<T> : SuggestDescriptorBase<PhraseSuggeste
7280
IPhraseSuggestHighlight IPhraseSuggester.Highlight { get; set; }
7381
IPhraseSuggestCollate IPhraseSuggester.Collate { get; set; }
7482
SmoothingModelContainer IPhraseSuggester.Smoothing { get; set; }
83+
int? IPhraseSuggester.TokenLimit { get; set; }
84+
bool? IPhraseSuggester.ForceUnigrams { get; set; }
7585

7686
public PhraseSuggesterDescriptor<T> Text(string text) => Assign(a => a.Text = text);
7787

@@ -99,5 +109,9 @@ public PhraseSuggesterDescriptor<T> Collate(Func<PhraseSuggestCollateDescriptor<
99109

100110
public PhraseSuggesterDescriptor<T> Smoothing(Func<SmoothingModelContainerDescriptor, SmoothingModelContainer> selector) =>
101111
Assign(a => a.Smoothing = selector?.Invoke(new SmoothingModelContainerDescriptor()));
112+
113+
public PhraseSuggesterDescriptor<T> TokenLimit(int? tokenLimit) => Assign(a => a.TokenLimit = tokenLimit);
114+
115+
public PhraseSuggesterDescriptor<T> ForceUnigrams(bool? forceUnigrams = true) => Assign(a => a.ForceUnigrams = forceUnigrams);
102116
}
103117
}

src/Tests/Search/Request/SuggestUsageTests.cs

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,9 @@ public SuggestUsageTests(ReadOnlyCluster cluster, EndpointUsage usage) : base(cl
6262
},
6363
field = "name",
6464
gram_size = 1,
65-
real_word_error_likelihood = 0.5
65+
real_word_error_likelihood = 0.5,
66+
token_limit = 5,
67+
force_unigrams = false
6668
},
6769
text = "hello world"
6870
} },
@@ -136,6 +138,8 @@ public SuggestUsageTests(ReadOnlyCluster cluster, EndpointUsage usage) : base(cl
136138
.Field(p => p.Name)
137139
.Text("hello world")
138140
.RealWordErrorLikelihood(0.5)
141+
.TokenLimit(5)
142+
.ForceUnigrams(false)
139143
)
140144
);
141145

@@ -208,7 +212,9 @@ public SuggestUsageTests(ReadOnlyCluster cluster, EndpointUsage usage) : base(cl
208212
},
209213
GramSize = 1,
210214
Field = "name",
211-
RealWordErrorLikelihood = 0.5
215+
RealWordErrorLikelihood = 0.5,
216+
TokenLimit = 5,
217+
ForceUnigrams = false
212218
}
213219
} },
214220
}

0 commit comments

Comments
 (0)