我建议应该强烈考虑 DBISAM,或者现在可能是他们更新的 ElevateDB。根据您以前的经验,我希望您知道它不会给您的可执行文件增加太多大小,是相当快速、可靠、完美的基于 Delphi 的解决方案,并且具有出色的支持。多年来,他们的 SQL 方言已经改进,因此现在非常好,高度符合 ANSI SQL-2003。
DBISAM/ElevateDB 不是开源的,但许可成本仅针对每个开发人员(而不是每个部署),因此如果只涉及少数开发人员,则成本(在我看来)可以忽略不计。考虑到您在 DBISAM/Elevatesoft 新闻组上获得的支持和响应水平,许可成本尤其合理,主要开发人员/所有者 (Tim Young) 积极参与回答问题和解决问题。除了专有解决方案的成本之外,当然还有对业务是否能够生存以及产品是否会在未来继续开发和支持的担忧。这是你必须自己权衡的事情,但发展似乎一如既往地强大。他们为他们的数据库提供了 .NET 提供程序,并支持使用 FreePascal/Lazarus 进行跨平台开发。
DBISAM 全文搜索的一个优点是它紧密集成到 SQL 中。也就是说,您可以发出一条 SELECT 语句,直接将某些字段的普通 WHERE 条件与其他字段的全文搜索条件结合起来。根据您的需要,这是一个很好的功能,它可以让使用不同的全文解决方案完成一些需要更多工作的事情变得非常简单和快速。我认为大多数附加解决方案,如 Lucene 和其他可能与 Firebird 一起使用的解决方案,并没有与常规 SQL 紧密集成,并且限制您仅检索具有全文标准的一组记录。类似于 Textolution 的 Firebird 专有插件(http://www.textolution.com/ftsib_example.asp) 看起来它可以容纳构建将应用常规和全文标准的单个复杂(嵌套)查询,但 DBISAM 做得更优雅。无论如何,向开源数据库添加专有插件有点违背了开源的目的。
我认为 DBISAM/ElevateDB 全文搜索的一个缺点是仅支持使用“AND”和“OR”条件,没有任何邻近搜索。
我注意到 SQLite 有一个全文解决方案,http: //www.sqlite.org/cvstrac/wiki?p=FullTextIndex 。我从未使用过 SQLite,但我知道很多人都喜欢它。我很确定 DBISAM/Elevatesoft 具有很大优势的一个领域是在需要强大的锁定功能的多用户应用程序中,尽管这对于单用户桌面应用程序来说并不一定有任何分量。