【问题标题】:Sitecore Lucene Index Update Strategy: syncMasterSitecore Lucene 索引更新策略:syncMaster
【发布时间】:2016-05-05 16:46:37
【问题描述】:

我正在使用 syncMaster lucence 索引策略(因为我想要实时数据)

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

我正在使用 Luke - Lucene Index Toolbox 来查看索引文档。我想问的问题是,当我重建索引时my_country_index。而且我知道 sitecore 中有 6 个国家/地区项目,我为其重建了索引。所以Luke 我看到了 6 个文件。

对于 ID 为“{DEA26CDA-9EA9-4F67-BB3F-13CAF6A68061}”的上述项目之一,每次更新此项目时,我都会看到添加了一个附加文档(我看到了 Like)。所以在索引中我有这个带有新旧数据的项目。这是syncMaster 策略的正确行为吗?

【问题讨论】:

  • 如果您没有创建新版本,而只是保存在索引中添加另一个条目的项目,那么您可能会在索引配置中缺少_uniqueid 字段:stackoverflow.com/a/26096271/5358985跨度>
  • 是的,你是对的,我错过了 _uniqueid 字段。我添加了它,现在它可以工作了。谢谢!!!!你让我开心。

标签: lucene sitecore sitecore7.2


【解决方案1】:

是的,如果您的索引与主数据库相关,这是 Sitecore 中的正常行为。在网络数据库上,您只有一个项目的每种语言版本。

您可以实现一个覆盖自定义行为的自定义爬虫:

public class CustomIndexCrawler : DatabaseCrawler
{
   protected override void IndexVersion(Item item, Item latestVersion, Sitecore.Search.IndexUpdateContext context)
   {
    if (item.Versions.Count > 0 && item.Version.Number != latestVersion.Version.Number)
        return;

    base.IndexVersion(item, latestVersion, context);
    }
}

这将强制索引只有项目的最后一个版本。您需要将此自定义爬虫分配给您的班级

其他选项是当您查询结果以获取最新版本时。 您需要检查 _latestversion 是否等于 1。

【讨论】:

  • 谢谢,_latestversion 字段始终适用于每个文档,即使对于旧文档也是如此。我认为是因为我正在处理local host,所以我正在使用Master 数据库。
猜你喜欢
  • 2016-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-10-12
  • 1970-01-01
相关资源
最近更新 更多