Excluding Standard Values items from search results
Last time I was configuring my search index and I found that there are Standard Values items in search results. Quick research in google showed me that I can hide this items by creating computed field, which will mark these items.
Few moments later, after another glimpse at the index configuration, I found my issue. In crawler configuration I forgot to define root of the search:
I want to search only under the Home item, so I should define it like this:
:)
Well, it was easy one. But then I though how could I exclude Standard Values items from index, without setting root. Solution with creating computed field and then checking it while fetching results, sounds too tricky for me. So I created custom crawler which checks if item is standard values item:
And configuration:
Few moments later, after another glimpse at the index configuration, I found my issue. In crawler configuration I forgot to define root of the search:
<locations hint="list:AddCrawler"> <crawler type="Sitecore.ContentSearch.SitecoreItemCrawler, Sitecore.ContentSearch"> <Database>web</Database> <Root>/sitecore/</Root> </crawler> </locations>
I want to search only under the Home item, so I should define it like this:
<Root>/sitecore/content/home</Root>
:)
Well, it was easy one. But then I though how could I exclude Standard Values items from index, without setting root. Solution with creating computed field and then checking it while fetching results, sounds too tricky for me. So I created custom crawler which checks if item is standard values item:
/// <summary> /// Custom Item Crawler /// </summary> public class CustomItemCrawler : SitecoreItemCrawler { protected override void DoAdd(IProviderUpdateContext context, SitecoreIndexableItem indexable) { var item = indexable.Item; // - Don't add Standard values Item - if (!StandardValuesManager.IsStandardValuesHolder(item)) { base.DoAdd(context, indexable); } } }
And configuration:
<locations hint="list:AddCrawler"> <crawler type="MyAssembly.Crawlers.CustomItemCrawler, MyAssembly"> <Database>web</Database> <Root>/sitecore/</Root> </crawler> </locations>
0 comments:
Post a Comment