Sitecore 8针对提供特定标记的页面的索引进行搜索

时间:2017-07-10 20:05:35

标签: sitecore sitecore8

我正在努力从8.1更新到8.2更新3.我理解搜索/索引已更改,某些代码已过时或不再有效。

不幸的是,在我们的一个类项目中,我们的sitecore合作伙伴为我们构建的一些方法由于过时的代码而不再工作,现在我需要帮助更新该代码。我已经能够将它缩小到只有2个文件,只需要一些简单的代码。

这是第一组代码:

public partial class TagResults
{
    /// <summary>
    /// Searches against the Lucene index for pages given a specific tag
    /// </summary>
    /// <returns></returns>
    public List<BasePage> GetPagesForTag(string Tag, int page, int pageSize, out int totalCount)
    {
        var tags = new List<BasePage>();

        Index searchIndex = SearchManager.GetIndex(Constants.LuceneIndexes.Tags);
        using (IndexSearchContext context = searchIndex.CreateSearchContext())
        {
            //The wildcard search allows us to pull back all items with the given tag
            var query = new WildcardQuery(new Term(Constants.LuceneFields.Tags, Tag));
            SearchHits hits = context.Search(query);

            totalCount = hits.Length;

            //Go through the results 
            SearchResultCollection results = hits.FetchResults(page * pageSize, pageSize);
            foreach (SearchResult result in results)
            {
                var searchItem = result.GetObject<Item>();
                Item currentDbItem = ItemUtility.GetItem(searchItem.ID);
                //Store the item if it exists and is a descendant of the news listing
                if (currentDbItem != null)
                {
                    tags.Add(new BasePage(currentDbItem));
                }
            }
        }

        return tags.ToList();
    }

    public static bool IsItemCastable(Item sitecoreItem)
    {
        return sitecoreItem != null && !string.IsNullOrEmpty(sitecoreItem[FieldIds.IsTagResultsComponent]);
    }
}

我想我有一些改变了:

ISearchIndex searchIndex = ContentSearchManager.GetIndex(Constants.LuceneIndexes.tags);
using (IProviderSearchContext context = searchIndex.CreateSearchContent())

但后来我陷入了

SearchHits hits = context.Search(query);

            totalCount = hits.Length;

            //Go through the results 
            SearchResultCollection results = hits.FetchResults(page * pageSize, pageSize);
            foreach (SearchResult result in results)

现在我问了很多,但我正在学习。如果有人能帮助我纠正这个问题,我会非常感激。我一直在做很多搜索,试图弄清楚如何纠正这个,但我觉得我错过了一些东西,我只是需要一些帮助。

提前谢谢。

0 个答案:

没有答案