如何实现Solr的到Sitecore的(How to implement Solr into Sit

2019-07-31 03:11发布

我要实现Solr的索引Sitecore的,我想知道什么是最好的办法?

我看了看下面的方法:

  1. 捕捉发布结束事件(或其他事件),然后按项目SOLR指数
  2. 实现自定义数据库抓取,并从历史表中的所有变化。 然后,使用自定义索引推送数据到Solr。

第二条本办法听起来好像很长的路要走(在我看来)。 在这种情况下,我需要建立一个新的搜索索引或搜索管理者?

如果任何人做之前,你可以点我到正确的方向? 此外,如果你可以张贴一些链接到有关Sitecore的,Solr的实施文章。

更新 OK,阅读Sitecore的文档后,这是我想出了:

  1. 创建自定义SolrConfiguration类,您可以设置像solrserviceurl属性,添加指标,其定义(定制Solr的索引)

  2. 创建SolrIndex并添加它(在配置文件)到你的SolrConfiguration。 其实例化,solrindex应订阅Sitecore的历史记录管理器中的AddEntry事件,并使用Solr爬虫沟通。

  3. 创建自定义的处理器,并挂接到Sitecore的初始化管道。 处理器应该初始化SolrConfiguration(来自步骤1)

  4. 因为一切都在你的配置文件将使用refrection被建立,您可以根据您的配置文件,让您的cofiguration实例

你觉得如何样。 我能有什么意见吗?

Answer 1:

我们已经做到了这一点上几个网站,而且往往有一个新的“上发表的” Solr指数和“未发表的”指数

我们中断:

OnItemSaving

事件推东西放到未公开指数(你可能不需要这个,这取决于如果你想在预览模式下的东西)

OnPublishItemProcessed

在这里,我们处理新增和更新公布的指数,我不知道我们做什么,关于这里的缺失不需开挖右转入的代码,但肯定是有缺失的OnItemDelete处理(下文提到)

OnItemDelete

在这里,我们中断从公布和未公布的索引中删除的东西(我想我们从这里公布的指数,因为Sitecore的让你发布的父节点,才能发布出来缺失到网络数据库中删除)

我希望帮助,我会发布的代码,如果我可以(但我会在怒视)。



Answer 2:

除了已经发布的答案(我认为这是做事情的好办法),我将分享我们是如何做到这一点。

基本上,我们只是看了看Sitecore的数据库抓取并决定就像是如何做它做这种事情。

我们利用的显著修改后的版本自定义项发电机组 ,以促进强类型的对象,并且具有对应于我们的Solr模式属性的对象之间的映射。 对于Solr的实际通信,我们使用SolrNet 。

总的想法是,通过所有的项目,我们可以循环递归(从站点根目录),并将它们映射到基于它的模板相应的类型。 然后,我们通过该项目的索引过程(有些项目需要索引多个文档到Solr在我们的实现)。

这种方法为我们工作得非常好,除了我会注意到,因为我们是在一次索引一切,也容易引进的发布和网站反映到索引中所做的任何更改之间的延迟时间略有位。 我们在一开始提出,但将努力尽快修复一个疏忽是,我们没有一个“未发表的”指标(这意味着我们需要发布的网站上看到更新)。 它不会影响我们的解决方案更加真的,但我肯定能看到它会别人,所以记住这一点。

我们没有特别想进入从索引项的缺失,所以我们做索引作为发布:结束事件。

我希望这额外的洞察力可以帮助你。 据我所知,没有一个整体大量的信息在那里对产品这个特定的组合,但我可以告诉你们,这是绝对有可能和非常有用。



文章来源: How to implement Solr into Sitecore