سؤال

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

            }
هل كانت مفيدة؟

المحلول

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--}");

نصائح أخرى

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"));
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top