[英]Having troubles in ordering search results using Lucene
我正在按照以下方式运行搜索查询,以便从Dynamics CRM中获取结果。 搜索效果很好,但是它根据相关性在搜索结果中起到了作用。 我们要按“ createdon”字段的降序对其进行排序。 由于我们每页仅显示10个结果,因此我无法对该查询返回的结果进行排序。
有什么方法可以根据字段订购吗?
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);
}
}
我自己没有用过Lucene,所以不能对此发表评论。
但是,如果您在基本CRM中这样做。 您可以将QueryExpression
与OrderExpression
一起使用。 然后,当您分页结果时,将按顺序分页。
这是QueryExpression
的示例,具有OrderExpression
和分页。
大概在某个时候,数据是从Lucene或您自己的代码(可能在CrmEntityQuery
从CRM中CrmEntityQuery
? 然后,您可以在此处添加排序。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.