添加新版本时,请删除索引中项目的所有先前版本
默认情况下,Sitecore 会将项目的所有版本添加到 sitecore_master_index。缺点是如果用户使用工作流并添加许多版本,则所有这些版本都将添加到内容编辑器中的搜索结果中。
组态:
<event name="item:versionAdded" >
<handler type="FilterPatch.Library.ContentSearch.EventHandler, AssemblyName" method="Execute" />
</event>
处理程序实现
public class EventHandler
{
public void Execute(object sender, EventArgs eventArgs)
{
var item = Event.ExtractParameter(eventArgs, 0) as Item;
//If item has less than 2 versions - then skip
if(item.Versions.Count < 2)
{
return;
}
var indexableItem = new SitecoreIndexableItem(item);
var index = ContentSearchManager.GetIndex(indexableItem);
using (var context = index.CreateDeleteContext())
{
foreach(var version in item.Versions.GetVersions(true))
{
if(!version.Versions.IsLatestVersion())
{
var indexableItemVersion = new SitecoreIndexableItem(version);
context.Delete(indexableItemVersion.UniqueId);
}
}
context.Commit();
}
}
}