缺少最新的NEST客户端
token_limit
对于短语建议者;我会打开PR来添加它。
同时,您可以通过从
PhraseSuggesterDescriptor<T>
以及在接口上实现令牌限制
private static void Main()
{
var client = new ElasticClient();
var searchResponse = client.Search<Question>(s => s
.Size(0)
.Suggest(su => su
.Phrase("suggest_phrase", p => new MyPhraseSuggesterDescriptor<Question>()
.TokenLimit(5)
.Field(f => f.Title)
.Highlight(h => h
.PreTag("<em>")
.PostTag("</em>")
)
.Text("dotnot entrity framework")
)
)
);
}
public interface IMyPhraseSuggester : IPhraseSuggester
{
[PropertyName("token_limit")]
int? TokenLimit { get; set; }
}
public class MyPhraseSuggesterDescriptor<T> : PhraseSuggesterDescriptor<T>, IMyPhraseSuggester where T : class
{
int? IMyPhraseSuggester.TokenLimit { get; set; }
public MyPhraseSuggesterDescriptor<T> TokenLimit(int tokenLimit)
{
((IMyPhraseSuggester)this).TokenLimit = tokenLimit;
return this;
}
}
将其序列化为
{
"size": 0,
"suggest": {
"suggest_phrase": {
"text": "dotnot entrity framework",
"phrase": {
"field": "title",
"highlight": {
"pre_tag": "<em>",
"post_tag": "</em>"
},
"token_limit": 5
}
}
}
}
请注意
TokenLimit()
方法调用在任何其他调用之前进行,因为其他调用将返回
短语建议描述符(&L);T>
而不是
MyPhraseSuggesterDescriptor<T>
. 你
能够
继续并重新定义的所有属性
IPhraseSuggester
在…上
MyPhraseSuggesterDescriptor<T>
如果您愿意,可以避免这种API怪癖,但这可能需要付出更多的努力,而不是暂时解决它:)