.net - 保持 Sitecore Lucene 索引最新

标签 .net lucene lucene.net sitecore

我有一个 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/

相关文章:

lucene - pattern_replace 中的不区分大小写的替换

java - 使用lucene进行数据库搜索

search - 如何使用 HitCollector 按字段值对 Lucene 结果进行排序?

c# - Oracle 客户端的可选 sql 命令参数

.net - 用于处理遗留数据库的最佳 .NET 数据层框架

sitecore - 在 Sitecore 中使用什么工具按日期搜索和排名?

lucene - 使用 IndexReader IsLocked 和 Unlock 方法

java - Lucene:使用 PrefixQuery 计算分数

c# - 如何使用 System.Random 获得高质量的归一化带符号随机 float ?

.net - 如何关闭其他应用程序的套接字连接?