1

我正在运行以下搜索查询以从 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);
    }
}
4

1 回答 1

1

我自己没有使用过 Lucene,所以不能对此发表评论。

但是,如果您在基本 CRM 中执行此操作。您将使用 aQueryExpressionOrderExpression. 然后,当您对结果进行分页时,它们会按顺序分页。

这是一个QueryExpression, 和OrderExpression, 和分页的示例。

使用 QueryExpression 分页大型结果集

大概在某个时候,数据被从 CRM 中提取出来,无论是在 Lucene 中,还是在您自己的代码中,也许在CrmEntityQuery?然后你可以在那里添加排序。

于 2015-06-26T09:59:36.663 回答