This is a bug in sitecore! It is reported, but no estimation on when it will be fixed.
The bug is in the Sitecore.ContentSearch.SitecoreItemCrawler.IsAncestorOf
method, where it doesn't do the right check.
This is the advice i got from sitecore support:
For the meantime, we suggest you implement the following workaround to resolve the issue:
Create a class derived from the
Sitecore.ContentSearch.SitecoreItemCrawler
class.Override its IsAncestorOf method. The new method should look as follows:
protected override bool IsAncestorOf(Item item) { bool result; using (new SecurityDisabler()) { using (new CachesDisabler()) { //result = item.Axes.IsAncestorOf(item); result = this.RootItem.Axes.IsAncestorOf(item); } } return result; }
Build the class into an assembly. Place the assembly to the site's bin folder.
Comment out all occurrences of the SitecoreItemCrawler class in your configuration. Insert new crawler definitions to use new crawler. By default you need to modify the following config files:
Sitecore.ContentSearch.Lucene.Index.Core.config Sitecore.ContentSearch.Lucene.Index.Master.config Sitecore.ContentSearch.Lucene.Index.Web.config <!--<crawler type="Sitecore.ContentSearch.SitecoreItemCrawler, Sitecore.ContentSearch">--> <crawler type="[fully qualified class name], [your assembly name]">
Rebuild the indexes.