【问题标题】:How to sort/filter using the new Sitecore.Search API如何使用新的 Sitecore.Search API 进行排序/过滤
【发布时间】:2011-09-06 01:47:03
【问题描述】:

我找不到使用新的 Sitecore.Search API 进行排序和过滤的任何方法。 Lucene 提供了以下方法:

Search(Query query, Filter filter)
Search(Query query, Sort sort)
Search(Query query, Filter filter, Sort sort)

但我不认为 Sitecore.Search API 公开了这些功能。我错过了什么吗?有人可以解释如何使用新的 Sitecore.Search API 执行过滤和排序吗?还是我需要使用包装好的Searcher.Search(Query, Sort) 来实现这一点?

我使用的是 Sitecore 6.5。

谢谢。

【问题讨论】:

  • 你知道如何过滤吗?
  • @Lavinski - 是的,我扩展了 IndexSearchContext 类并公开了所需的方法,正如 techphoria414 所建议的那样。请参阅下面接受的答案。

标签: lucene.net sitecore sitecore6


【解决方案1】:

您可以扩展 IndexSearchContext 以获得接受 Lucene.Net.Search.Sort 对象的方法。我的一位团队成员发现了这一点,而且非常干净。

public class SortableIndexSearchContext : IndexSearchContext 
{ 
public SortableIndexSearchContext(ILuceneIndex index) 
{ 
Initialize(index, true); 
} 
public SearchHits Search(Query query, Sort sort) 
{ 
return Search(query, SearchContext.Empty, sort); 
} 
public SearchHits Search(PreparedQuery query, Sort sort) 
{ 
return new SearchHits(Searcher.Search(query.Query, sort)); 
} 
public SearchHits Search(QueryBase query, Sort sort) 
{ 
return Search(query, SearchContext.Empty, sort); 
} 
public SearchHits Search(string query, Sort sort) 
{ 
return Search(query, SearchContext.Empty, sort); 
} 
public SearchHits Search(Query query, ISearchContext context, Sort sort) 
{ 
return Search(Prepare(query, context), sort); 
} 
public SearchHits Search(QueryBase query, ISearchContext context, Sort sort) 
{ 
return this.Search(Prepare(Translate(query), context), sort); 
} 
public SearchHits Search(string query, ISearchContext context, Sort sort) 
{ 
return this.Search(Parse(query, context), sort); 
} 
} 

【讨论】:

  • 是这样想的。感谢 techphoria414 的例子。我会试试这个。
猜你喜欢
  • 1970-01-01
  • 2021-05-29
  • 2016-11-04
  • 1970-01-01
  • 1970-01-01
  • 2021-07-08
  • 2016-07-22
  • 1970-01-01
  • 2018-03-13
相关资源
最近更新 更多