C# 建议查询需要很长时间
我正在使用NEST(c#)客户端与Elasticsearch进行通信。我正在使用suggest API在我的站点中实现自动完成,这是我的查询代码示例C# 建议查询需要很长时间,c#,elasticsearch,nest,C#,elasticsearch,Nest,我正在使用NEST(c#)客户端与Elasticsearch进行通信。我正在使用suggest API在我的站点中实现自动完成,这是我的查询代码示例 var completionResult = client.Search( body => body .Type("myProject") .Size(5) .Fields("title","
var completionResult = client.Search(
body => body
.Type("myProject")
.Size(5)
.Fields("title","tags","control","platform")
.SuggestGlobalText(searchText)
.SuggestCompletion("SuggestCompletionResult", sfc => sfc
.OnField("control.suggestControl"))
.SuggestPhrase("SuggestPhraseResult", sfp => sfp
.OnField("control.suggestControl"))
);
我需要以List
的形式获得最终结果,我的建议列表类是
public class SuggestionList
{
public string Text { get; set; }
}
我执行的将结果转换为List
的操作是
List<SuggestionList> SuggestResultSet = new List<SuggestionList>();
if (completionResult != null)
{
if (completionResult.Suggest != null && completionResult.Suggest.Count > 0)
{
var suggestionList = completionResult.Suggest.ToList();
if (suggestionList != null && suggestionList.Count > 0)
{
if (suggestionList[0].Value.ToList().Count() != 0 && suggestionList[0].Value.ToList()[0].Options.ToList().Count > 0)
{
foreach (var text in suggestionList[0].Value.ToList()[0].Options.ToList())
{
SuggestResultSet.Add(new SuggestionList { Text = text.Text });
}
}
if (suggestionList[1].Value.ToList().Count() != 0 && suggestionList[1].Value.ToList()[0].Options.ToList().Count > 0)
{
foreach (var text in suggestionList[1].Value.ToList()[0].Options.ToList())
{
SuggestResultSet.Add(new SuggestionList { Text = text.Text });
}
}
}
}
}
List SuggestResultSet=new List();
if(completionResult!=null)
{
if(completionResult.Suggest!=null&&completionResult.Suggest.Count>0)
{
var suggestionList=completionResult.Suggest.ToList();
if(suggestionList!=null&&suggestionList.Count>0)
{
如果(suggestionList[0].Value.ToList().Count()!=0&&suggestionList[0].Value.ToList()[0].Options.ToList().Count>0)
{
foreach(suggestionList[0]中的变量文本)。Value.ToList()[0]。Options.ToList())
{
添加(新的SuggestionList{Text=Text.Text});
}
}
如果(suggestionList[1].Value.ToList().Count()!=0&&suggestionList[1].Value.ToList()[0].Options.ToList().Count>0)
{
foreach(suggestionList[1]中的变量文本)。Value.ToList()[0]。Options.ToList())
{
添加(新的SuggestionList{Text=Text.Text});
}
}
}
}
}
获得最终结果需要更长的时间,是否有任何方法可以在不影响性能的情况下实现此目标我认为您的转换过程过于复杂,嵌套很高。记住,这不是编译的,只是伪的
List<SuggestionList> SuggestResultSet = new List<SuggestionList>();
if(completionResults != null)
{
foreach(var suggestion in completionResults.Suggest)
{
SuggestsResultSet.Add(new SuggestionList {Text = suggestion.Text });
}
}
List SuggestResultSet=new List();
if(completionResults!=null)
{
foreach(completionResults.Suggest中的var建议)
{
SuggestResultSet.Add(新建SuggestionList{Text=suggestion.Text});
}
}