如何实现进程内全文搜索引擎

时间:2008-09-17 15:16:32

标签: windows winapi full-text-search

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

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

我在Stack Overflow(What are some Search Servers out there?)上找到了大量搜索引擎,但我真的不明白哪些引擎可以满足我的需求。在我花了一两天测试每一个之前,我想过要求The Collective提出意见。

有什么建议吗?

7 个答案:

答案 0 :(得分:1)

市场上有很多选择。要么完全承诺商业产品,要么开源变种。您选择的搜索提供商非常依赖于您所针对的客户。

Microsoft拥有其Search Server的免费Express版本。据我所知,Express版仅限于在一台服务器上运行Application Tier。

还有Apache Lucene项目是开源的。它有一个很好用的API,易于使用和大量用户社区。原始项目基于Java,但我个人也使用了其他implementations,例如NLucene

答案 1 :(得分:0)

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

答案 2 :(得分:0)

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

答案 3 :(得分:0)

看一下使用PostgreSQL和tsearch。

答案 4 :(得分:0)

尝试将postgresql与tsearch一起使用

答案 5 :(得分:0)

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

答案 6 :(得分:0)

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