Sitecore 7搜索,无法访问已处置的对象

Ian*_*ham 7 lucene search sitecore

我一直在使用一些Sitecore 7搜索代码.以下示例.

using (var context = Index.CreateSearchContext())
{
    // ....Build predicates

    var query = context.GetQueryable<SearchResultItem>().Where(predicate); 
    return query.GetResults();
}
Run Code Online (Sandbox Code Playgroud)

这在SOLR中工作正常,但是当与标准Lucene一起使用时,每当我引用SearchResults<SearchResultItem>返回的属性时GetResults(),Sitecore错误都带有" Cannot access a disposed object".它似乎GetResults()没有枚举并仍然挂在searchcontext上.

有人之前遇到过这个并知道如何修复吗?我已经看到一些文章建议SearchContext处于应用程序状态,但理想情况下我想避免这种情况.

谢谢

伊恩

Jen*_*sen 7

似乎SearchResults<T>持有参考SearchHit并且LuceneSearchProvider不会让读者打开.新版本的Lucene会自动关闭阅读器.我想你可能会回错了.你应该这样做:

var query = context.GetQueryable<SearchResultItem>().Where(predicate);
return query.ToList();
Run Code Online (Sandbox Code Playgroud)

但请确保,不要返回太多.你应该使用take()等.