关于windows:如何实现进程内全文搜索引擎

关于windows:如何实现进程内全文搜索引擎

How to implement in-process full text search engine

在我们的一个商业应用程序(Win32,用 Delphi 编写)中,我们希望实现全文搜索。应用程序以某种无法直接识别为文本的二进制格式存储用户数据。

理想情况下,我希望找到一个进程内解决方案(DLL 可以)或我可以通过 TCP 访问的本地服务器(最好)。 API 应该允许我向服务器提交文本信息(以及表示它来自的二进制 blob 的元数据),当然,它应该允许我进行全文搜索,至少对逻辑运算符的支持最少和子字符串搜索。需要 Unicode 支持。

我在 Stack Overflow 上找到了广泛的搜索引擎列表(有哪些搜索服务器?),但我并不真正了解哪些引擎可以满足我的需求。在我花一两天时间测试他们每个人之前,我想征求 The Collective 的意见。

有什么建议吗?


市场上有很多选择。完全成熟的商业产品或开源变体。您对搜索提供商的选择在很大程度上取决于您所定位的客户。

Microsoft 有一个免费的 Express 版本的 Search Server。据我所知,Express 版仅限于在一台服务器上运行应用程序层。

还有开源的 Apache Lucene 项目。它有一个很好用的 API 和一个庞大的用户社区。原项目是基于Java的,但也有其他实现如NLucene for .NET,我个人用过。


虽然不在进程中,但 Solr 非常快(基于 Lucene)并且可以从任何平台(HTTP)轻松访问


Sphinx 可能是最高效和可扩展的选项,而 SQLite - FTS3 是最直接的选项。


尝试使用带有 tsearch 的 postgresql


看看使用 PostgreSQL 和 tsearch。


我想答案取决于您的数据库。例如,SQL Server 具有全文搜索功能,如果需要,还可以提供英语语言查询。


我建议你看看 SQLite -- 全文搜索包含在最新版本中。


推荐阅读