我正在尝试了解全文搜索引擎Lucene的一些基础知识。更具体地说,我正在查看LuceneIdeNet。
今天我有一个旧的遗留.NET 4.8 Web应用程序。一些是MVC,但较新的部分遵循一个相当不错的API优先模式。应用程序保存了大量的记录(应用程序50万),有大量不同的字段。搜索功能至少可以说是过时的。它是一个大量的旧Linq2SQL查询,在类似的查询中散开。
我想介绍一种新的更好的搜索记录的方法,所以我开始研究Lucene.Net。但是我试图理解一个关键概念,但我似乎在任何地方都找不到答案,我想这可能是因为它不能做到,但我想确定一下。
有没有可能设置Lucene来监视SQL表或视图,这样我就不必在代码中维护Lucene索引了?这个应用程序的代码并不适合在添加内容时轻松地保持Lucene索引的更新,更改或删除。但数据库是很好的真理来源。我可以忍受一个小的延迟有索引更新。但基本上,我希望为每个业务模型定义哪些字段是索引的一部分,以及id是什么,然后能够从我的Web App的C#服务器端代码中使用该索引进行查询。
这种情况可能吗?还是我要求太多了?
1条答案
按热度按时间xtfmy6hx1#
这是完全可能的,但不是现成的。如果你想实现它,你必须实现它。从根本上说,你需要实现三件事。
1.一种了解sql数据库中的相关数据每次更改的方法。
1.用于捕获有关更改信息的位置,称为更改日志。
1.一个例程,它读取更改日志,将这些更改应用于
LuceneNet索引,然后标记更改日志中的记录已处理。
当然,有很多不同的方法来处理这些问题。
当在SQL数据库中进行手动更改时,此SO回答Lucene.Net索引更新,提供了一种可以完成此操作的方法的更多细节。