簡體   English   中英

建議查詢需要很長時間

[英]Suggestion query taking long time

我正在使用NEST(c#)客戶端與Elasticsearch通信。 我正在使用建議API在我的網站中實現自動完成功能,這是我的查詢代碼示例

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<SuggestionList>而我的建議列表類是

 public class SuggestionList
{
    public string Text { get; set; }
}

我執行的將結果轉換為List<SuggestionList>

    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<SuggestionList> SuggestResultSet = new List<SuggestionList>();
if(completionResults != null)
{
    foreach(var suggestion in completionResults.Suggest)
    {
        SuggestsResultSet.Add(new SuggestionList {Text = suggestion.Text });
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM