Sitecore Solr从索引中删除版本

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

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

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

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

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

任何帮助非常感谢。

我在这个上联系了Sitecore,他们说这很可能是一个bug,他们正在调查。

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

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

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

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

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

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