Я запускаю поисковый запрос следующим образом, чтобы привести результаты от Dynamics CRM. Поиск работает отлично, но он объединяет результаты, основанные на релевантности. Мы хотим упорядочить их в порядке убывания поля «createdon». Поскольку мы показываем только 10 результатов на страницу, поэтому я не могу сортировать результат, возвращаемый этим запросом.Имея проблемы при заказе результатов поиска с использованием Lucene
Можно ли заказать заказ на основе поля?
public IEnumerable<SearchResult> Search(string term, int? pageNumber, int
pageSize, out int totalHits, IEnumerable<string> logicalName)
{
var searchProvider = SearchManager.Provider;
var query = new CrmEntityQuery(term, pageNumber.GetValueOrDefault(1), pageSize, logicalNames);
return GetSearchResults(out totalHits, searchProvider, query);
}
private IEnumerable<SearchResult> GetSearchResults(out int totalHits,
SearchProvider searchProvider, CrmEntityQuery query)
{
using (ICrmEntityIndexSearcher searcher = searchProvider.GetIndexSearcher())
{
Portal.StoreRequestItem("SearchDeduplicateListForAuthorisation", new List<Guid>());
var results = searcher.Search(query);
totalHits = results.ApproximateTotalHits;
return from x in results
select new SearchResult(x);
}
}
спасибо. На самом деле я ищу несколько запросов, например (kbArticle, веб-страницы, инциденты и т. Д.). Поэтому, если я использую QueryExpression, это будет очень дорогостоящий запрос. – Scorpion
Ну, как Lucene извлекает данные из CRM? Предположительно, либо через вызов веб-службы, и в этом случае он будет иметь одинаковую производительность. Может быть, это напрямую связано с SQL? В этом случае вы заказываете запрос SQL. Учитывая, что Lucene является библиотекой поисковых систем, я был бы удивлен, если бы она не поддерживала упорядочение результатов. Неясно, где находится настоящая проблема. –
Нет, я не думаю, что Lucene поддерживает заказы. https://lucene.apache.org/core/2_9_4/queryparsersyntax.html#Fuzzy Searches – Scorpion