Sitecore:为多站点设置Solr核心的最佳实践

时间:2015-10-10 23:30:19

标签: search solr sitecore sitecore8

据我所知,我们可以在Solr中创建N个核心。但我对于为sitecore多站点实现设置Solr核心的最佳实践有点不清楚。 场景: 我们在一个sitecore实例中有5个站点。每个站点都有搜索功能要求。

最佳实践问题:

  1. 每个网站可以共享核心索引和主索引吗?

  2. 并为web索引创建特定于站点的核心?

  3. 我们是否需要设置配置文件或类似文件以建立站点与solr核心之间的关系?

  4. 3.1。我想,每个站点都需要有sitecore solr索引配置文件吗?  例如Sitecore.ContentSearch.Solr.SiteA.Index.Web(包含自定义索引名称的开箱即用索引文件的副本?)

    1. 我们是否需要编写任何智能(网站上下文),以便搜索使用正确的solr Core?

1 个答案:

答案 0 :(得分:4)

这个问题的答案实际上是基于意见的。没有一种解决方案在任何情况下都是理想的。

甚至有人就https://sitecorechat.slack.com进行了讨论。

首先,您需要考虑是否要重用网站之间的任何内容。如果是,那么您可以使用Sitecore开箱即用的索引。你不会从单独的索引中获得那么多。当然,您可以创建单独的索引,但必须多次抓取某些内容。

如果要创建单独的索引:

  1. 保持sitecore_core_indexsitecore_master_indexsitecore_web_index不变 - Sitecore将使用它们来运行内容编辑器搜索和其他Sitecore后台搜索。
  2. 为每个网站创建Solr masterweb核心,例如site1_master_indexsite1_web_index
  3. 对于每个网站,请复制sitecore_master_indexsitecore_web_index的配置,并设置内容根的正确位置。

    E.g。创建Sitecore.ContentSearch.Solr.Index.Master.config文件(Site1.ContentSearch.Solr.Index.Master.config)的副本,并将其内容更改为:

  4. <configuration xmlns:patch="http://www.sitecore.net/xmlconfig/">
      <sitecore>
        <contentSearch>
          <configuration type="Sitecore.ContentSearch.ContentSearchConfiguration, Sitecore.ContentSearch">
            <indexes hint="list:AddIndex">
              <index id="site1_master_index" type="Sitecore.ContentSearch.SolrProvider.SolrSearchIndex, Sitecore.ContentSearch.SolrProvider">
                <param desc="name">$(id)</param>
                <param desc="core">$(id)</param>
                <param desc="propertyStore" ref="contentSearch/indexConfigurations/databasePropertyStore" param1="$(id)" />
                <configuration ref="contentSearch/indexConfigurations/defaultSolrIndexConfiguration" />
                <strategies hint="list:AddStrategy">
                  <strategy ref="contentSearch/indexConfigurations/indexUpdateStrategies/syncMaster" />
                </strategies>
                <locations hint="list:AddCrawler">
                  <content type="Sitecore.ContentSearch.SitecoreItemCrawler, Sitecore.ContentSearch">
                    <Database>master</Database>
                    <Root>/sitecore/content/site1</Root>
                  </content>
                  <media type="Sitecore.ContentSearch.SitecoreItemCrawler, Sitecore.ContentSearch">
                    <Database>master</Database>
                    <Root>/sitecore/media library/site1</Root>
                  </media>
                </locations>
              </index>
            </indexes>
          </configuration>
        </contentSearch>
      </sitecore>
    </configuration>
    

    此配置告知Sitecore仅对此索引中的/sitecore/content/site1/sitecore/media library/site1位置编制索引。

    1. 使用约定来获得正确的索引搜索,例如:

      ISearchIndex SearchIndex
      {
          get
          {
              return ContentSearchManager.GetIndex(Sitecore.Context.Site.Name + "_" + Sitecore.Context.Database.Name + "_index");
          }
      }