У нас есть сайт, созданный в Umbraco CMS, и я занимаюсь поиском по сайту.На сайте есть раздел под названием «Новости», где регулярно публикуются обновления.При выводе результатов из раздела новостей (среди других страниц) я хочу, чтобы результаты отображались как можно раньше, например, если кто-то ищет «результаты экзамена», я хотел бы привести соответствующие страницы новостей, созданные в 2018 году раньше, чем страница, созданная ранее.в 2017 году и тд.Если есть способ повысить (либо время запроса, либо время индекса), чтобы увеличить последние страницы?
Ниже мой код, который я написал до сих пор:
var page = 1;
var pageSize = 5;
if (Request.QueryString["q"] != null)
searchQuery = Request.QueryString["q"];
if (Request.QueryString["page"] != null)
Int32.TryParse(Request.QueryString["page"], out page);
ISearchResults searchResults = null;
BaseSearchProvider searcher = ExamineManager.Instance.SearchProviderCollection["ExternalSearcher"];
var headerFields = new[] { "contentTitle", "metaTags", "metaDescription", "nodeName" };
var contentFields = new[] { "contentDescription", "mainBody" };
var criteria = searcher.CreateSearchCriteria(IndexTypes.Content, BooleanOperation.Or);
var searchTerm = string.IsNullOrEmpty(Request["q"]) ? string.Empty : Request["q"];
if (searchTerm != string.Empty)
{
searchTerm = searchTerm.MakeSearchQuerySafe();
if (searchTerm.Length > 0)
{
searchTerm = searchTerm.Trim();
}
var examineQuery = criteria.GroupedOr(headerFields, searchTerm.Boost(100));
examineQuery.Or().GroupedOr(contentFields, searchTerm.Boost(50));
if (searchTerm.Contains(" "))
{
examineQuery.Or().GroupedOr(headerFields, searchTerm.RemoveStopWords().Split(' ').Select(x => x.MultipleCharacterWildcard().Value.Boost(10)).ToArray());
examineQuery.Or().GroupedOr(contentFields, searchTerm.RemoveStopWords().Split(' ').Select(x => x.MultipleCharacterWildcard()).ToArray());
}
searchResults = searcher.Search(examineQuery.Compile(), maxResults: pageSize * page);
}