我們已將Solr Search與Sitecore 8.1和MVC一起應用,我們正在努力使用搜索文本框上的自動完成/自動建議功能。使用Solr搜索和自我推薦的Sitecore
期: 結果沒有像我們預期的那麼快出現。它花費了太多時間。
我們已經做了什麼:
答:我們已經創建Ajax調用CSHTML頁面如下圖所示。
$(document).ready(function() {
$("#SearchQuery").autocomplete({
autoFocus: true,
minLength: 3,
source: function (request, response) {
$.ajax({
type: "POST",
url: "@(Url.Action("SearchSuggestion", "SearchService"))",
dataType: "json",
data: { enteredText: request.term },
success: function (data) {
debugger;
response(data);
}
})
},
messages: {
noResults: "", results: ""
}
});
})
B.這是我們的控制器。
[HttpPost]
public JsonResult SearchSuggestion(string enteredText, int? page)
{
var result = service.GetSearchAutoData(enteredText).ToList();
return Json(result, JsonRequestBehavior.AllowGet);
}
public List<Search> GetSearchAutoData(string searchText)
{
var searchresult = GetSearchAutoSuggetions(searchText)
.Take(10)
.Select(x => new Search
{
title = x.Document.GetItem().Name,
description = x.Document.GetItem().Fields["Description"].ToString(),
extenstion = x.Document["GetMediaExtension"],
url = (x.Document.GetItem().Paths.IsMediaItem) ? Sitecore.Resources.Media.MediaManager.GetMediaUrl(new MediaItem(x.Document.GetItem())) : x.Document.GetItem().Paths.ContentPath
})
.Where(x => (x.extenstion.ToLower() != "jpeg" && x.extenstion.ToLower() != "jpg" && x.extenstion.ToLower() != "png"));
return searchresult.ToList();
}
所以我們要優化我們的代碼,或任何人可以幫助實現這樣的情況?
可能有很多原因 - 首先這個函數做什麼? 'GetSearchAutoSuggetions' –
此功能可幫助我使用Sitecore內容搜索API獲取搜索結果。代碼如下 –
好的 - 但這可能是代碼將成爲性能瓶頸。首先它返回一個'IQueryable'? –