Sybase Advantage Database Server具有免费的本地服务器引擎(多线程和记录级锁定),优秀的Delphi TDataSet后代组件(包含源代码)以及出色的全文搜索引擎。
Advantage全文搜索支持AND、OR、NOT和NEAR操作符。Advantage还提供SCORE和SCOREDISTINCT标量函数,返回搜索条件中所有单词实例的总计数。
Advantage全文索引在记录更新时维护,这意味着它们不需要任何重建。索引以压缩格式保存;因此实际索引大小可以比物理数据小得多。可以对非索引数据执行全文搜索,但这需要对记录数据进行物理搜索,速度可能会更慢。索引搜索使用位图过滤器以获得最佳性能。
在线帮助中详细介绍了索引选项等内容:
我们已经将DotLucene集成到一个内部基于Delphi的应用程序中,使用Hydra(当时Mike完成了这项工作);如果这是我们想要追求的选项,我相信我们可以提取出来并使其可重复使用于此项目。
我注意到SQLite有一个全文搜索解决方案,http://www.sqlite.org/cvstrac/wiki?p=FullTextIndex。虽然我从未使用过SQLite,但我知道很多人喜欢它。在需要强大的锁定功能的多用户应用程序方面,我相信DBISAM/Elevatesoft具有巨大优势,尽管对于单用户桌面应用程序来说这并不一定有任何影响。
我会选择使用Sqlite,使用Aducom Sqlite组件更容易处理sqlite,而不是DiSQLite,它们是免费的并且作为TDataset组件工作,我会投票支持sqlite,因为:
Sqlite基本上是单用户/单连接的。更新操作会锁定整个数据库。您可以通过设置其他连接的超时值来处理这个问题(默认情况下没有超时)。根据您使用的值,多用户访问可能会变得非常慢和/或频繁超时。
我曾经使用过来自http://www.aducom.com/的Asqlite组件。免费且开源。目前看起来还不支持d2009,但正在进行开发。还有其他一些组件集,但我没有使用过其他的。
您可以使用Rubicon(现在由http://www.href.com/rubicon新管理)为任何Delphi应用添加全文搜索功能。但是这是收费的 :(