新增新版本時,請刪除索引中專案的所有先前版本
預設情況下,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();
}
}
}