C# 定期更新Lucene.net索引

C# 定期更新Lucene.net索引,c#,asp.net-mvc,lucene.net,C#,Asp.net Mvc,Lucene.net,我有一个MVC网站使用Lucene.net进行搜索。该网站拥有超过10万种产品。已经为该站点构建了索引。然而,该网站也有2个定期更新数据库的数据源(可能每15分钟更新一次)。所以数据变化很大。我应该如何更新Lucene索引,还是根本不需要更新?使用进程调度器(如)每隔一段时间(可能是每15分钟)运行一次,以获取数据库中未编入索引的项 使用字段作为要比较的ID(如序列号或日期时间)。您将从索引中获取最新添加的文档,从数据库中获取最新添加的文档,并对两者之间的所有内容编制索引。您必须小心不要索引重复

我有一个MVC网站使用Lucene.net进行搜索。该网站拥有超过10万种产品。已经为该站点构建了索引。然而,该网站也有2个定期更新数据库的数据源(可能每15分钟更新一次)。所以数据变化很大。我应该如何更新Lucene索引,还是根本不需要更新?

使用进程调度器(如)每隔一段时间(可能是每15分钟)运行一次,以获取数据库中未编入索引的项

使用字段作为要比较的ID(如序列号或日期时间)。您将从索引中获取最新添加的文档,从数据库中获取最新添加的文档,并对两者之间的所有内容编制索引。您必须小心不要索引重复的文档(或者更糟糕的是,跳过未索引的文档)


或者,将索引与2个数据源同步,并在文档存储在数据库中时对其进行索引,从而避免上述缺陷(重复/丢失)。我不确定这些提要是如何更新您的数据库的,但您可以截取它们并相应地更新索引。

看看这个解决方案,我有同样的要求,我使用了这个链接中的解决方案,它对我有效。它使用计时器每隔一段时间创建一次索引,这样就不会有任何重叠/跳过问题。试试看


谢谢。

你是说索引只建立了一次,再也不写了?在这种情况下,我肯定会创建一个进程,使其与数据库保持最新。有没有办法再次将其写入索引?