我正在尝试使用nest 7.4和我从中找到的示例创建自动建议查询 https://www.elastic.co/guide/en/elasticsearch/client/net-api/current/suggest-usage.html 但是我收到未找到Project和ProjectFilter的错误。 您能否让我知道我所缺少的东西。我认为Project可能引用了DTO对象,但事实并非如此,因为如果我用DTO替换项目,则会报错
void getSuggestions()
{
var settings = new ConnectionSettings(new Uri("http://localhost:9200"))
.DefaultIndex(index);
var client = new ElasticClient(settings);
var results = client.Search<GenericSearchDto>(new SearchRequest<GenericSearchDto>
{
Query = ProjectFilter,DocValueFields = Fields<GenericSearchDto>(f => f.Name),Suggest = new SuggestContainer
{
{
"my-term-suggest",new SuggestBucket
{
Text = "hello world",Term = new TermSuggester
{
MaxEdits = 1,MaxInspections = 2,MaxTermFrequency = 3,MinDocFrequency = 4,MinWordLength = 5,PrefixLength = 6,SuggestMode = SuggestMode.Always,Analyzer = "standard",Field = Field<GenericSearchDto>(p => p.Name),ShardSize = 7,Size = 8
}
}
},{
"my-completion-suggest",new SuggestBucket
{
Prefix = Project.Instance.Name,Completion = new CompletionSuggester
{
Contexts = new Dictionary<string,IList<ISuggestContextQuery>>
{
{
"color",new List<ISuggestContextQuery>
{ new SuggestContextQuery { Context = Project.First.Suggest.Contexts.Values.SelectMany(v => v).First() } }
}
},Fuzzy = new SuggestFuzziness
{
Fuzziness = Fuzziness.Auto,MinLength = 1,PrefixLength = 2,Transpositions = true,UnicodeAware = false
},Analyzer = "simple",Field = Field<GenericSearchDto>(p => p.Suggest),Size = 8,SkipDuplicates = true
}
}
},{
"my-phrase-suggest",Phrase = new PhraseSuggester
{
Collate = new PhraseSuggestCollate
{
Query = new PhraseSuggestCollateQuery
{
Source = "{ \"match\": { \"{{field_name}}\": \"{{suggestion}}\" }}",},Params = new Dictionary<string,object>
{
{ "field_name","name" }
},Prune = true
},Confidence = 10.1,DirectGenerator = new List<DirectGenerator>
{
new DirectGenerator { Field = "description" }
},GramSize = 1,Field = "name",RealWordErrorLikelihood = 0.5,TokenLimit = 5,ForceUnigrams = false
}
}