据我所知,我们可以在Solr中创建N个核心。但我对于为sitecore多站点实现设置Solr核心的最佳实践有点不清楚。 场景: 我们在一个sitecore实例中有5个站点。每个站点都有搜索功能要求。
最佳实践问题:
每个网站可以共享核心索引和主索引吗?
并为web索引创建特定于站点的核心?
我们是否需要设置配置文件或类似文件以建立站点与solr核心之间的关系?
3.1。我想,每个站点都需要有sitecore solr索引配置文件吗? 例如Sitecore.ContentSearch.Solr.SiteA.Index.Web(包含自定义索引名称的开箱即用索引文件的副本?)
答案 0 :(得分:4)
这个问题的答案实际上是基于意见的。没有一种解决方案在任何情况下都是理想的。
甚至有人就https://sitecorechat.slack.com
进行了讨论。
首先,您需要考虑是否要重用网站之间的任何内容。如果是,那么您可以使用Sitecore开箱即用的索引。你不会从单独的索引中获得那么多。当然,您可以创建单独的索引,但必须多次抓取某些内容。
如果要创建单独的索引:
sitecore_core_index
,sitecore_master_index
和sitecore_web_index
不变 - Sitecore将使用它们来运行内容编辑器搜索和其他Sitecore后台搜索。master
和web
核心,例如site1_master_index
和site1_web_index
。对于每个网站,请复制sitecore_master_index
和sitecore_web_index
的配置,并设置内容根的正确位置。
E.g。创建Sitecore.ContentSearch.Solr.Index.Master.config
文件(Site1.ContentSearch.Solr.Index.Master.config
)的副本,并将其内容更改为:
<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
位置编制索引。
使用约定来获得正确的索引搜索,例如:
ISearchIndex SearchIndex
{
get
{
return ContentSearchManager.GetIndex(Sitecore.Context.Site.Name + "_" + Sitecore.Context.Database.Name + "_index");
}
}