组态

Sitecore 附带一组预先配置的标准索引,你可以扩展,也可以定义自己的索引。在预配置中,sitecore_master_indexsitecore_web_index 是你网站搜索最感兴趣的。这些是主数据库和 Web 数据库树中所有 Sitecore 项的预定义索引,并配置为存储所有模板中通用的 Sitecore 项的所有标准字段。

你可以在此位置查看标准 Web 索引的此配置:<Your Site>\App_Config\Include\Sitecore.ContentSearch.Lucene.Index.Web.config

索引配置的主要重要领域是:

  • 字段配置 - 索引中应存储哪些字段以及如何存储它们。
  • 策略 - 如何以及何时更新索引。
  • Crawler - 索引可以获取 Sitecore 数据的位置

现场配置

查看 sitecore_web_index 配置,你可以看到以下参考:<configuration ref="contentSearch/indexConfigurations/defaultLuceneIndexConfiguration" />。这是指在此处找到的共享索引配置文件:<Your Site>\App_Config\Include\Sitecore.ContentSearch.Lucene.DefaultIndexConfiguration.config。在这里,你可以看到标准配置中包含的所有字段。

基本上有两种方法来定义字段:字段直接来自 Sitecore 项字段,或者它是计算字段。计算字段允许你编写一些代码来进行一些计算并将结果存储在字段中。在构建/更新索引时,不会在查询索引时执行此代码。如果字段需要存储聚合数据(例如计数等),这将特别有用。

<fieldMap> 元素中,你将看到元素 <fieldNames hint="raw:AddFieldByFieldName"><fields hint="raw:AddComputedIndexField">,它们分别包含直接源字段和计算字段。

策略

索引的策略确定索引何时更新。有以下选项可供选择:

  • OnPublishEndAsynchronousStrategy(onPublishEndAsync) - 发布项目时,索引将异步更新。
  • SynchronousStrategy(syncMaster) - 保存项目时,索引将立即同步更新。
  • IntervalAsynchronousStrategy(intervalAsyncCore / intervalAsyncMaster) - 定期检查项目更新并异步更新索引
  • ManualStrategy - 无自动索引更新。索引只能手动更新(通过控制面板或以编程方式)
  • RebuildAfterFullPublishStrategy(rebuildAfterFullPublish) - 发布后,索引将全部重建
  • RemoteRebuildStrategy(remoteRebuild) - 此策略适用于 Sitecore 的多个实例。例如,如果从内容管理服务器调用重建,则远程内容传递服务器将订阅此事件并重建其自己的索引。

默认情况下,主索引配置为 syncMaster。这是因为如果你在体验编辑器中保存项目并在页面上呈现显示索引的结果,你将希望看到你在结果中立即对项目所做的更改。Web 索引配置为 onPublishEndAsync,这是因为当从 master 数据库向 Web 发布项目时,Web 数据库的索引只需要更新。

你还可以组合多种策略。例如,如果你的内容管理(CM)和内容交付(CD)具有单独的 Sitecore 实例,则将 onPublishEndAsyncremoteRebuild 结合起来是有意义的,这样 CD 项目发布时就会更新 CD 索引,并在用户从 CM 服务器的控制面板触发重建。

你可以使用以下配置选择策略:

<strategies hint="list:AddStrategy">
    <strategy ref="contentSearch/indexConfigurations/indexUpdateStrategies/onPublishEndAsync" />
</strategies>

爬行者

这允许你指定要编制索引的 Sitecore 数据的位置。Web 索引具有以下默认配置:

<locations hint="list:AddCrawler">
    <crawler type="Sitecore.ContentSearch.SitecoreItemCrawler, Sitecore.ContentSearch">
        <Database>web</Database>
        <Root>/sitecore</Root>
    </crawler>
</locations> 

两个重要的位是 <Database><Root> 元素。<Root> 元素允许你指定 Sitecore 树中索引应该索引的起始位置。实际上,你可能在内容节点下有一个 Home 节点,你可以将其指向此节点,以便它仅对实际内容/页面而不是模板等进行索引。