Exclude folders from search result

孤街醉人 提交于 2019-12-13 20:32:33

问题


I am using sitecore 7 Lucene search. When I search for any term, the search results show all folders and pages. Can I exclude folders from the search result? I have following code to search documents from index.

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();

            }

回答1:


I believe SearchResultItem has a TemplateId property, so you can filter out folder items using that.

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



回答2:


If you wish to limit your search to a specific folder you can add something like this:

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

If you wish to exclude specific folders you can do something like this:

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


来源:https://stackoverflow.com/questions/23602779/exclude-folders-from-search-result

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!