Sitecore Solr从索引中删除版本

时间:2013-11-21 15:27:52

标签: c# solr sitecore sitecore7

我正在使用Sitecore 7和Solr Search提供程序。我目前有网站设置来在发布项目时更新搜索索引。

我注意到,当CMS作者创建项目的不同版本然后将这些版本提交到索引中时,项目的先前版本不会从索引中删除,因此索引包含同一Sitecore项目的多个版本。

有没有人知道我可以更改的任何设置,以确保在添加新版本之前从索引中删除了以前的版本?

我尝试运行下面的代码来在发布之前从索引中删除项目,但索引上的Delete方法似乎没有删除任何内容。

var indexableItem = (SitecoreIndexableItem)item;
ContentSearchManager.GetIndex(index).Delete(indexableItem.UniqueId

任何帮助都非常感激。

2 个答案:

答案 0 :(得分:3)

我在这个问题上联系了Sitecore,他们说这可能是一个错误,他们正在调查。

作为一种解决方法,Sitecore建议使用入站和出站过滤器来过滤索引中的项目。

以下是有关此内容的更多信息:

http://www.sitecore.net/Community/Technical-Blogs/Sitecore-7-Development-Team/Posts/2013/04/Sitecore-7-Inbound-and-Outbound-Filter-Pipelines.aspx

更新:@Jason在下面的评论中指出,现在是对此的支持修复 - 请参阅知识库文章 - https://kb.sitecore.net/articles/992608

答案 1 :(得分:2)

你真的需要删除旧版本吗?定义了一个虚拟字段,用于过滤最新版本。只需将这样的属性添加到您的POCO(或基类)并使用它来过滤您的Linq查询:

[IndexField("_lastestversion")]
public bool IsLatestVersion { get; set; }

请注意,默认Solr配置(_lastestversion)中字段的名称与Lucene配置(_latestversion)中的字段名称不同。