SearchManager vs ContentSearchManager?

本文关键字:ContentSearchManager vs SearchManager | 更新日期: 2023-09-27 18:15:20

我从来没有真正深入研究过sitecore的搜索功能,直到现在我一直在使用以前开发人员使用的东西。我正在研究一个问题,其中某些谓词似乎没有在下面的代码片段中工作:

public IEnumerable<IndexedEvent> SearchItems(Expression<Func<IndexedEvent, bool>> predicate)
{
   using (IProviderSearchContext _context = ContentSearchManager.GetIndex(indexName).CreateSearchContext())
   {
       IEnumerable<IndexedEvent> results = _context
                .GetQueryable<IndexedEvent>()
                .Where(predicate);
            return results;
   }
}

这不是我写的,我只是在用。

我正在寻找我的问题时,我遇到了这个例子问题非常基本的使用sitecore搜索包括代码:

// use id of from the index configuration
using (IndexSearchContext indexSearchContext = SearchManager.GetIndex("my-custom-index").CreateSearchContext())
{
    // MatchAllDocsQuery will return everything. Use proper query from the link below
    SearchHits hits = indexSearchContext.Search(new MatchAllDocsQuery(), int.MaxValue);
    // Get Sitecore items from the results of the query
    List<Item> items = hits.FetchResults(0, int.MaxValue).Select(result => result.GetObject<Item>()).Where(item => item != null).ToList();
}

现在这似乎使用了一种完全不同的方法来查询索引,IndexSearchContext,其中我的代码(不是我写的)使用IProviderSearchContext。我找不到任何关于它们的文档,它们位于完全不同的程序集中。

这就引出了一个问题,我什么时候应该使用IndexSearchContext,什么时候应该使用IProviderSearchContext ?这里有什么根本的区别吗?还是仅仅是实现相同净结果的两种方式?

SearchManager vs ContentSearchManager?

您所指的SearchManagerIndexSearchContext的问题和代码来自Sitecore 6。ContentSearchManagerIProviderSearchContext的代码适用于Sitecore 7或8(好吧,就是7+)。

所以,如果你的代码是Sitecore8作为你的标签和代码的例子建议,ContentSearchManager是一种方式去。

相关文章:
  • 没有找到相关文章