我有一个 Sitecore 应用程序,它通过 Sitecore 的内置 API 创建和使用许多 Lucene 索引。
我需要确保索引中的项目在发布时保持最新。为此,我创建了一个 Sitecore Hook,用于检测项目何时保存到“web”数据库并重新索引该项目。它似乎在大部分情况下都有效,但似乎有时会莫名其妙地失败。
我在钩子(Hook)中的代码如下所示:
item.Database.Indexes.RemoveItem(item, true);
item.Database.Indexes.UpdateItem(item);
有人曾经尝试过这个并有更好的解决方案吗?
最佳答案
HistoryEngine 配置片段:
<Engines.HistoryEngine.Storage>
<obj type="Sitecore.Data.$(database).$(database)HistoryStorage, Sitecore.Kernel">
<param connectionStringName="$(id)" />
<EntryLifeTime>30.00:00:00</EntryLifeTime>
</obj>
</Engines.HistoryEngine.Storage>
根据this SDN document (PDF) ,每次 Sitecore 对项目进行更改时,它都会向数据库表中添加一条记录。不过,默认情况下,Sitecore 不会执行此操作,除非您将上述代码段包含在 <database>
中。 web.config 中您要索引的数据库的部分。
关于.net - 保持 Sitecore Lucene 索引最新,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3712277/