Skip to content

Commit 47d19d8

Browse files
russcamMpdreamz
authored andcommitted
Add token_limit and force_unigrams to phrase suggest (#3112)
Closes #3109
1 parent 765e780 commit 47d19d8

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
@@ -61,7 +61,9 @@ public SuggestUsageTests(ReadOnlyCluster cluster, EndpointUsage usage) : base(cl
6161
},
6262
field = "name",
6363
gram_size = 1,
64-
real_word_error_likelihood = 0.5
64+
real_word_error_likelihood = 0.5,
65+
token_limit = 5,
66+
force_unigrams = false
6567
},
6668
text = "hello world"
6769
} },
@@ -134,6 +136,8 @@ public SuggestUsageTests(ReadOnlyCluster cluster, EndpointUsage usage) : base(cl
134136
.Field(p => p.Name)
135137
.Text("hello world")
136138
.RealWordErrorLikelihood(0.5)
139+
.TokenLimit(5)
140+
.ForceUnigrams(false)
137141
)
138142
);
139143

@@ -206,7 +210,9 @@ public SuggestUsageTests(ReadOnlyCluster cluster, EndpointUsage usage) : base(cl
206210
},
207211
GramSize = 1,
208212
Field = "name",
209-
RealWordErrorLikelihood = 0.5
213+
RealWordErrorLikelihood = 0.5,
214+
TokenLimit = 5,
215+
ForceUnigrams = false
210216
}
211217
} },
212218
}

0 commit comments

Comments
 (0)