Juz*_*ott 3 lucene sitecore sitecore7
我在Sitecore v7.1中创建了自定义内容搜索索引.
索引和爬网工作正常,我能够搜索索引并正确返回项目.我遇到的问题是索引有时会填充"爬行根"值之外的项(请参阅下面的配置).
到目前为止的工作是添加模板排除,Sitecore.ContentSearch.Lucene.DefaultIndexConfiguration.config但这很烦人,因为我有很多非内容模板,我不想继续添加到此文件.
我的索引配置如下(这是在配置包含文件中):
<configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
<sitecore>
<contentSearch>
<configuration type="Sitecore.ContentSearch.LuceneProvider.LuceneSearchConfiguration, Sitecore.ContentSearch.LuceneProvider">
<indexes hint="list:AddIndex">
<index id="artscentre_web_index" type="Sitecore.ContentSearch.LuceneProvider.SwitchOnRebuildLuceneIndex, Sitecore.ContentSearch.LuceneProvider">
<param desc="name">$(id)</param>
<param desc="folder">$(id)</param>
<!-- This initializes index property store. Id has to be set to the index id -->
<param desc="propertyStore" ref="contentSearch/databasePropertyStore" param1="$(id)" />
<strategies hint="list:AddStrategy">
<!-- NOTE: order of these is controls the execution order -->
<strategy ref="contentSearch/indexUpdateStrategies/onPublishEndAsync" />
</strategies>
<commitPolicyExecutor type="Sitecore.ContentSearch.CommitPolicyExecutor, Sitecore.ContentSearch">
<policies hint="list:AddCommitPolicy">
<policy type="Sitecore.ContentSearch.TimeIntervalCommitPolicy, Sitecore.ContentSearch" />
</policies>
</commitPolicyExecutor>
<locations hint="list:AddCrawler">
<crawler type="Sitecore.ContentSearch.SitecoreItemCrawler, Sitecore.ContentSearch">
<Database>web</Database>
<Root>/sitecore/content/Sites/ArtsCentre/Home</Root>
</crawler>
</locations>
</index>
</indexes>
</configuration>
</contentSearch>
</sitecore>
</configuration>
正如您所看到的,我的爬虫根标记应该意味着索引仅索引我的内容项,但它是从诸如 /sitecore/content/Sites/SiteA/Configuration
任何有关这方面的帮助都会很棒:)
干杯,贾斯汀
这是sitecore中的一个错误!据报道,但没有估计何时修复.
错误在Sitecore.ContentSearch.SitecoreItemCrawler.IsAncestorOf方法中,它没有进行正确的检查.
这是我从sitecore支持获得的建议:
与此同时,我们建议您实施以下解决方法来解决此问题:
创建一个派生自
Sitecore.ContentSearch.SitecoreItemCrawler该类的类.覆盖其IsAncestorOf方法.新方法应如下所示:
Run Code Online (Sandbox Code Playgroud)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; }将类构建为程序集.将程序集放在站点的bin文件夹中.
注释掉配置中出现的所有SitecoreItemCrawler类.插入新的爬网程序定义以使用新的爬网程序.默认情况下,您需要修改以下配置文件:
Run Code Online (Sandbox Code Playgroud)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]">重建索引.
| 归档时间: |
|
| 查看次数: |
2557 次 |
| 最近记录: |