クローラー ルート アイテムは、検索インデックスの更新では無視される


解説

検索インデックスの増分更新を実行する場合、Sitecoreが、インデックスに存在しないはずのコンテンツ アイテムを含めてしまう場合があります。

具体的には、Sitecoreが特定のインデックスに対するクローラー ルートの構成値を無視する場合があります。

例えば、sitecore_master_indexの構成が次の場合、/sitecore/contentツリーの外部にあるアイテムがインデックスに現れる可能性があります:

<index id="sitecore_master_index" type="Sitecore.ContentSearch.LuceneProvider.LuceneIndex, Sitecore.ContentSearch.LuceneProvider">
  ...
  <locations hint="list:AddCrawler">
    <crawler type="Sitecore.ContentSearch.SitecoreItemCrawler, Sitecore.ContentSearch">
      <Database>master</Database>
      <Root>/sitecore/content</Root>
    </crawler>
  </locations>
</index>

この問題の原因は、インデックスに指定されたクローラー ルート アイテムがインデックス更新中に無視されることです。

この問題は、完全な検索インデックスの再構築が実行された場合には発生しないことに注意してください。

解決策

この問題を解決するには、次の手順を実行します:

  1. Sitecore.Support.406670.dll アセンブリを\binフォルダーに配置します。
  2. 構成ファイルで、次のすべての文字列を探します:
    Sitecore.ContentSearch.SitecoreItemCrawler, Sitecore.ContentSearch
    次の文字列に置き換えます:
    Sitecore.Support.ContentSearch.SitecoreItemCrawler, Sitecore.Support.406670
    例えば、sitecore_master_indexインデックスの構成は次のようになります:
    <index id="sitecore_master_index" type="Sitecore.ContentSearch.LuceneProvider.LuceneIndex, Sitecore.ContentSearch.LuceneProvider">
      ...
      <locations hint="list:AddCrawler">
        <crawler type="Sitecore.Support.ContentSearch.SitecoreItemCrawler, Sitecore.Support.406670">
          <Database>master</Database>
          <Root>/sitecore/content</Root>
        </crawler>
      </locations>
    </index>