2011-09-06 20 views
6

Nie mogłem znaleźć sposobu sortowania i filtrowania przy użyciu nowego interfejsu API Sitecore.Search. Lucene oferuje następujące metody:Jak sortować/filtrować przy użyciu nowego Sitecore.Search API

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

Ale nie sądzę, że interfejs Sitecore.Search API udostępnia te funkcje. Czy czegoś brakuje? Czy ktoś może wyjaśnić, jak wykonać filtrowanie i sortowanie za pomocą nowego interfejsu Sitecore.Search API? Lub czy muszę użyć owiniętego Searcher.Search(Query, Sort), aby to osiągnąć?

Używam Sitecore 6.5.

Dzięki.

+0

Czy wiesz, jak filtrować? –

+0

@Lavinski - Tak, rozszerzyłem klasę IndexSearchContext i ujawniłem wymagane metody, zgodnie z sugestią technophore414. Zobacz akceptowaną odpowiedź poniżej. – Sudeep

Odpowiedz

13

Można rozszerzyć IndexSearchContext, aby mieć metody akceptujące obiekt Lucene.Net.Search.Sort. Jeden z członków mojego zespołu odkrył to i jest całkiem czysty.

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); 
} 
} 
+0

Tak myślałem. Dzięki technice na przykład. Spróbuję tego. – Sudeep

Powiązane problemy