8

我必须在 Sitecore 中实现 Solr 索引,我想知道最好的方法是什么?

我查看了以下方法:

  1. 捕获发布结束事件(或其他事件),然后将项目推送到 solr 索引
  2. 实现自定义数据库爬虫并从历史表中获取所有更改。然后使用自定义索引推送数据到 solr。

第二种方法听起来像是一种方法(在我看来)。在这种情况下,我是否需要创建新的搜索索引或搜索管理器?

如果有人以前做过,你能指出我正确的方向吗?另外,如果您可以发布一些有关 sitecore-solr 实施的文章的链接。

更新 好的,在阅读了站点核心文档之后,这就是我想出的:

  1. 创建您的自定义 SolrConfiguration 类,您可以在其中设置 solrserviceurl 等属性,添加索引及其定义(自定义 solr 索引)

  2. 创建 SolrIndex 并将其(在配置文件中)添加到您的 SolrConfiguration。哪个实例化,solrindex 应该订阅 Sitecore History Manager 的 AddEntry 事件,并与 solr 爬虫通信。

  3. 创建自定义处理器并连接到 sitecore 初始化管道。处理器应该初始化 SolrConfiguration(从第 1 步开始)

  4. 由于您的配置文件中的所有内容都将使用反射构建,因此您可以根据您的配置文件获取配置实例

听起来怎么样。请问我有什么意见吗?

4

2 回答 2

2

我们已经在几个站点上完成了这项工作,并且往往有一个新的“已发布”solr 索引和“未发布”索引

我们打断:

OnItemSaving

将内容推送到未发布索引的事件(您可能不需要这个,这取决于您是否想要预览模式下的内容)

OnPublishItemProcessed

我们在这里处理对已发布索引的添加和更新,我不确定我们如何处理这里的删除而不深入研究代码,但肯定会处理 OnItemDelete 上的删除(如下所述)

OnItemDelete

我们在这里打断以从已发布和未发布的索引中删除内容(我认为我们在这里从已发布的索引中删除,因为 Sitecore 让您发布父节点以便将删除内容发布到 Web 数据库)

我希望这会有所帮助,如果可以的话,我会发布代码(但我会皱眉头)。

于 2012-08-21T11:55:52.027 回答
2

除了已经发布的答案(我认为这是一种很好的做事方式),我将分享我们是如何做到的。

我们基本上只是看了一下 Sitecore 数据库爬虫,并决定做一些类似于它的工作方式的事情。

我们利用自定义项目生成器的重大修改版本来促进强类型对象和具有与我们的 Solr 模式相对应的属性的对象之间的映射。对于与 Solr 的实际通信,我们使用SolrNet

总体思路是,我们递归地遍历所有项目(从站点根目录开始),并根据其模板将它们映射到适当的类型。然后我们对该项目进行索引过程(在我们的实现中,有些项目需要将多个文档索引到 Solr)。

这种方法对我们来说效果很好,除了我要注意的是,因为我们一次索引所有内容,它往往会在发布和反映对索引所做的任何更改的站点之间引入一点延迟时间。我们在开始时做出的一个疏忽,但很快就会修复,那就是我们没有“未发布”的索引(这意味着我们需要发布网站才能看到更新)。它并没有真正影响我们的解决方案,但我绝对可以看到其他人的解决方案,所以请记住这一点。

我们并不是特别想从索引中删除项目,因此我们将索引作为发布:结束事件进行。

我希望这个额外的见解可以帮助你。据我所知,关于这种特定产品组合的信息并不多,但我可以告诉你这绝对是可能的并且非常有用。

于 2012-08-21T18:56:37.770 回答