使用Firebird和Delphi进行全文搜索

7
我正在研究在我们的Firebird数据库上实现全文搜索。我们的要求如下:
  1. 多个表中的每个字段都应该被索引。当找到结果时,我们应该能够找出源表。
  2. 索引可以存储在数据库或文件系统中。
  3. 搜索结果(BigInt主键)必须用于与数据库中的原始记录连接,以显示表格中的记录。
请问有什么好的方法可以满足我们的需求吗?我已经尝试了一些将DotLucence集成到Delphi中的方法,但是没有找到很多关于如何去做的信息。
2个回答

12

以下是您可以考虑的一些资源:

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

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

您还可以阅读Bjoern Reimer和Dirk Baumeister在第4届Firebird会议上发表的论文“在Firebird中实现全文搜索而无需全文搜索引擎”。


谢谢Jim。我看了大部分,但从未找到Mutis。我正在下载。顺便问一下,你在Twitter项目中使用FTS吗?如果是的话,你选择了哪一个? - norgepaul
我们目前计划使用DISQLite3,但客户一直在等待。Delphi Live! 然后家人来访。现在事情正在平静下来,我在工作中有紧迫的时间。 - Jim McKeeth

-1

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


我们不想使用 where field like '%something%' 这样的语句。 - jorgeu

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接