7

我正在考虑在我们的 Firebird 数据库上实现全文搜索。我们的要求是:

  1. 几个表中的每个字段都应该被索引。当找到结果时,我们应该能够找出原始表。
  2. 索引可以存储在数据库或文件系统中。
  3. 必须使用搜索结果(BigInt 主键)与数据库中的原始记录连接,以显示表中的记录。

任何人都可以推荐一种体面的方式来实现我们所需要的吗?我已经研究过以某种方式将 DotLucence 集成到 Delphi 中,但实际上并没有找到很多关于如何去做的信息。

4

2 回答 2

12

这里有一些资源供您考虑:

  • Sphinx非常强大和流行的免费开源全文搜索引擎。
  • Textolution全文搜索 Interbase 和 Firebird。
  • IBObjects全文搜索(“模糊搜索”)模块,一个完整的工作模块,可用于设置您的搜索索引或作为您自己的自定义实现的模型。
  • Rubicon是一个 Delphi 附加组件,可让您将全文搜索功能放入您的应用程序中。
  • 对 Firebird SQL 的全文搜索 作者:Dan Letecky在 CodeProject 上使用 DotLucene 全文搜索引擎。
  • Mutis是 Lucene 搜索引擎的 Delphi 端口。为索引、目录和搜索基于文本的信息提供灵活的 API,具有出色的性能。非常适合实施自定义搜索引擎、研究、文本检索、数据挖掘等。

有一个名为 Red Soft 的公司制作的 Firebird 代码的分支。它的许可与 Firebird 相同,因此您可以查看他们的版本,该版本可以通过 JavaVM 接口使用 Lucene 引擎支持全文搜索。

您还可以阅读Bjoern Reimer 和 Dirk Ba​​umeister 在第四届 Firebird 会议上发表的题为“在没有全文搜索引擎的情况下在 Firebird 中进行全文搜索”的论文。

于 2009-06-04T20:22:43.093 回答
-1

我想你会遇到需求2的问题:索引可以存储在数据库中,也可以存储在文件系统中。大多数索引服务创建自己的索引文件,以高度优化的方式存储数据。如果您真的想要它,也许可以将索引加载并保存到单个 blob 字段,但我真的没有看到这样做的原因。

于 2009-06-05T07:34:28.193 回答