Sitecore Solr 从索引中删除版本

问题描述 投票:0回答:3

我正在使用 Sitecore 7 和 Solr 搜索提供商。我目前的网站设置是在发布项目时更新搜索索引。

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

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

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

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

非常感谢任何帮助。

c# solr sitecore sitecore7
3个回答
3
投票

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

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

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


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


0
投票

我在 Sitecore 10.1 上遇到了确切的问题。我花了几天时间调查该问题,但未能找到任何可以提供帮助的日志。我很想知道这个问题是否已在 Sitecore 10 中得到解决

© www.soinside.com 2019 - 2024. All rights reserved.