search lucene sitecore

search - La búsqueda de Sitecore 7 no puede acceder a un objeto eliminado



lucene (2)

¿ GetResults() devuelve una List o IQueryable / IEnumerable ?

Intenta devolver una lista en caso de que no lo esté ya.

return query.GetResults().ToList();

Aclamaciones

He estado trabajando con algún código de búsqueda de Sitecore 7. Ejemplo a continuación.

using (var context = Index.CreateSearchContext()) { // ....Build predicates var query = context.GetQueryable<SearchResultItem>().Where(predicate); return query.GetResults(); }

Esto funciona bien en SOLR, pero cuando se usa con Lucene estándar, siempre que hago referencia a una propiedad en SearchResults<SearchResultItem> devuelta por GetResults() , los errores de Sitecore con " Cannot access a disposed object ". Parece que GetResults() no enumera y aún se cuelga en el texto de búsqueda.

¿Alguien se encuentra con esto antes y sabe cómo solucionarlo? He visto algunos artículos que sugieren tener el SearchContext en estado de aplicación, pero lo ideal es evitarlo.

Gracias

Ian


Parece que SearchResults<T> contiene una referencia a SearchHit y LuceneSearchProvider no mantiene abierto un lector. La nueva versión de Lucene cierra automáticamente el lector. Creo que podrías devolver el tipo incorrecto. Probablemente deberías hacer esto así:

var query = context.GetQueryable<SearchResultItem>().Where(predicate); return query.ToList();

Sin embargo, asegúrese de no devolver demasiados. Probablemente deberías usar take () etc.