从搜索结果中排除文件夹

时间:2014-05-12 06:55:36

标签: lucene sitecore sitecore7

我正在使用sitecore 7 Lucene搜索。当我搜索任何术语时,搜索结果会显示所有文件夹和页面。我可以从搜索结果中排除文件夹吗?我有以下代码从索引中搜索文档。

var searcher = Sitecore.ContentSearch.ContentSearchManager.GetIndex("sitecore_web_index");
            using (var context = searcher.CreateSearchContext())
            {
                var query = context.GetQueryable<SearchResultItem>();

                var result = query.Where(x => (x.Content.Contains(_searchTerm));

                globalResults = result.GetResults();

            }

2 个答案:

答案 0 :(得分:1)

我相信SearchResultItem具有TemplateId属性,因此您可以使用该属性过滤掉文件夹项。

var result = query.Where(x => (x.Content.Contains(_searchTerm) &&
                               x.TemplateId.ToString() != "{--Folder-template-id--}");

答案 1 :(得分:1)

如果您希望将搜索范围限制在特定文件夹中,可以添加以下内容:

var TopSearchFolderID = new Guid("{A5D56753-E5E4-42A1-AD3E-4B43C70CC618}");
var result = query.Where(x => x.Content.Contains(_searchTerm) & x._path == TopSearchFolderID.ToString("N"));

如果您希望排除特定文件夹,可以执行以下操作:

var FolderToExcludeID = new Guid("{A5D56753-E5E4-42A1-AD3E-4B43C70CC618}");
var result = query.Where(x => x.Content.Contains(_searchTerm) & x._path != FolderToExcludeID.ToString("N"));