繁体   English   中英

使用Lucene订购搜索结果时遇到麻烦

[英]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中这样做。 您可以将QueryExpressionOrderExpression一起使用。 然后,当您分页结果时,将按顺序分页。

这是QueryExpression的示例,具有OrderExpression和分页。

使用QueryExpression页面大结果集

大概在某个时候,数据是从Lucene或您自己的代码(可能在CrmEntityQuery从CRM中CrmEntityQuery 然后,您可以在此处添加排序。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM