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

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

我在 Stack Overflow 上找到了广泛的搜索引擎列表(有哪些搜索服务器?)但我真的不明白哪些引擎可以满足我的需求。在我花一两天时间测试它们之前,我想先征求集体的意见。

有什么建议么?

有帮助吗?

解决方案

市场上有多种选择。要么是成熟的商业产品,要么是开源变体。您对搜索提供商的选择很大程度上取决于您的目标客户。

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

还有 阿帕奇卢塞恩 项目是开源的。它有一个很好的、易于使用的 API 和一个庞大的用户社区。原来的项目是基于Java的,但是也有其他的 实施 例如 NLucene 对于我个人使用过的.NET。

其他提示

我建议您看看 SQLite——最新版本中包含全文搜索。

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

看一下如何使用 PostgreSQL 和 tsearch。

尝试将 postgresql 与 tsearch 一起使用

狮身人面像 可能是最有效和可扩展的选择,而 SQLite-FTS3 是最直接的选择。

虽然不在处理过程中, 索尔 非常快(基于 Lucene)并且可以从任何平台轻松访问(HTTP)

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top