我正在使用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();
}
答案 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"));