这是您如何解决
Title现场问题的示例。
将您的映射更改为类似(或使用MultiField,但我找不到同时将字段映射为字符串和完成的选项):
client.CreateIndex(indexName, i => i .AddMapping<ContentIndexable>(m => m .Properties( ps => ps .Completion(c => c.Name("title.completion") .IndexAnalyzer("standard") .SearchAnalyzer("standard") .MaxInputLength(30) .Payloads() .PreserveSeparators() .PreservePositionIncrements()) .String(s => s.Name(x => x.Title).CopyTo("title.completion")))));更改
SuggestCompletion为
var result = client.Search<ContentIndexable>(body => body .Index(indexName) .SuggestCompletion("content-suggest" + Guid.NewGuid(), descriptor => descriptor .onField(t => t.Title.Suffix("completion")) .Text("title") .Size(10)));并
QueryString以
var searchResponse = client.Search<ContentIndexable>(body => body .Index(indexName) .Query(query => query .QueryString( qs => qs .onFields(f => f.Title.Suffix("completion")) .Query("title tha" + "*") .MinimumShouldMatchPercentage(100))));该解决方案的问题是事实,我们为
Title字段存储了两次数据。这就是为什么我前面提到使用MultiField很好,但是我无法使用
NEST。
希望这可以帮助。



