Lucene 是否可以监控 Sql Table 并保持自身更新?

Is it possible for Lucene to monitor a Sql Table and keep itself updated?

我正在尝试了解全文搜索引擎 Lucene 的一些基础知识。更具体地说,我正在查看 Lucene.Net.

今天我有一个旧的遗留 .NET 4.8 Web 应用程序。有些是 MVC,但较新的部分遵循非常好的 API 优先模式。该应用程序拥有大量不同领域的记录(应用程序一百万)。那里的搜索功能至少可以说已经过时了。大量旧的 Linq2SQL 查询以类似查询的形式散开。

我想介绍一种新的更好的记录搜索方式,所以我开始研究 Lucene.Net。但是我试图理解一个关键概念,但我似乎无法在任何地方找到答案,我认为这可能是因为它无法完成,但我想确定一下。

是否可以设置 Lucene 来监视 SQL table 或视图,这样我就不必在我的代码中维护 Lucene 索引。当添加、更改或删除内容时,此应用程序的代码无法轻松地保持 Lucene 索引更新。但是数据库是很好的事实来源。我可以稍微延迟更新索引。但基本上我想为每个业务模型定义哪些字段是索引的一部分以及 id 是什么,然后能够从我的 Web 应用程序的 C# 服务器端代码查询该索引。

这种情况有可能吗还是我要求太多了?

这完全有可能,但并非开箱即用。如果你想要它,你必须实施它。从根本上说,您需要实现三件事。

  1. 一种了解 sql 数据库中的相关数据每次发生变化的方法
  2. 捕获有关更改的信息的地方,称之为更改日志。
  3. 读取更改日志的例程,将这些更改应用于

LuceneNet 索引并标记更改日志中的记录已处理。

当然有很多不同的方法来处理这些问题。

此 SO 回答 提供了有关实现此目的的一种方法的更多详细信息。