情况
我有以下Sitecore Lucene配置:
问题
计算的字段基于父/子字段.如何设置Sitecore中的Lucene,只是在索引中更新了实际更改的项目的文档.
因此,不更新其他文档上的计算字段(这些字段是必需的,这些字段上存在搜索条件).
题
是否有可能手动触发索引中其他项的更新?
我已经研究过继承Sitecore.Search.Index,但没有一个相关的方法是虚拟的.
此外,我尝试订阅IndexingProvider-events:
public event EventHandler OnRemoveItem;
公共事件EventHandler OnRemoveVersion;
公共事件EventHandler OnUpdateItem;
这背后的想法是在DatabaseCrawler中触发需要更新的其他项目的OnUpdateItem事件,但是您无法从IndexingProvider外部触发此事件.
有没有办法在不进行完全重建的情况下触发索引更新,这不涉及保存/重新发布其他项目?
谢谢!
桑德
我正在使用(.NET 4.5)MemoryCache,与SlidingExpiration结合使用.
我注意到方法.AddOrGetExisting()似乎没有考虑到期,而.Get()确实如此.
单元测试:
[TestMethod]
public void NonWorking()
{
var memCache = new MemoryCache("somekey");
var cachePolicy = new CacheItemPolicy() { SlidingExpiration = TimeSpan.FromSeconds(1) };
var cacheEntry = memCache.AddOrGetExisting("key1", "foo", cachePolicy);
Assert.AreEqual(null, cacheEntry); // OK: AddOrGetExisting returns null, because it wasn't existing yet
Thread.Sleep(1100);
// Expecting null, since the existing item for key1 has expired by now.
// It is, however, still "foo".
Assert.AreEqual(null, memCache.AddOrGetExisting("key1", "bar", cachePolicy));
// FYI: afterwards, memCache.Get("key1") still equals "foo"
}
[TestMethod]
public void Working()
{
var …
Run Code Online (Sandbox Code Playgroud)