2011-09-06 10 views
6

non riuscivo a trovare un modo per fare per ordinare e filtrare utilizzando la nuova API Sitecore.Search. Lucene fornisce i seguenti metodi:Come ordinare/filtro utilizzando la nuova API Sitecore.Search

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

Ma non penso che l'API di Sitecore.Search esponga queste funzionalità. Mi sto perdendo qualcosa? Qualcuno può spiegare come eseguire il filtro e ordinare con la nuova API Sitecore.Search? O devo usare lo Searcher.Search(Query, Sort) incartato per raggiungere questo?

Sto usando Sitecore 6.5.

Grazie.

+0

Hai capito come filtrare? –

+0

@Lavinski - Sì, ho esteso la classe IndexSearchContext ed esposto i metodi richiesti, come suggerito da techphoria414. Si prega di consultare la risposta accettata di seguito. – Sudeep

risposta

13

È possibile estendere IndexSearchContext di avere metodi che accettano un oggetto Lucene.Net.Search.Sort. Uno dei miei membri del team lo ha capito ed è abbastanza pulito.

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

Pensato così. Grazie a techphoria414 per l'esempio. Ci proverò. – Sudeep

Problemi correlati