如何实现进程内全文搜索引擎
在我们的一个商业应用程序(Win32,用Delphi编写)中,我们想要实现全文搜索。该应用程序以某种无法直接识别为文本的二进制格式存储用户数据。
理想情况下,我想找到一个进程内解决方案(DLL可以),或者可以通过TCP访问(最好)的本地服务器。该API应该允许我向服务器提交文本信息(以及表示它来自的二进制blob的元数据),并且当然应该允许我进行全文搜索,而对逻辑运算符的支持至少要最少和子字符串搜索。需要Unicode支持。
我在Stack Overflow上找到了广泛的搜索引擎列表(那里有几台搜索服务器?),但我真的不明白这些引擎中的哪些可以满足我的需求。我想过要花一两天的时间来测试他们的意见,然后征求集体的意见。
有什么建议?
解决方案
回答
我建议我们看一下SQLite-全文搜索包含在最新版本中。
回答
我想答案取决于数据库。例如,SQL Server具有全文搜索功能,并且如果需要,还可以提供英语语言查询。
回答
看一下使用PostgreSQL和tsearch。
回答
尝试将Postgresql与tsearch一起使用
回答
市场上有很多选择。完全成熟的商业产品或者开放源代码的变体。我们对搜索服务提供商的选择很大程度上取决于我们要定位的客户。
Microsoft有其Search Server的免费Express版本。据我所知,Express版本仅限于在一台服务器上运行Application Tier。
还有一个Apache Lucene项目是开源的。它具有易于使用的漂亮API和大量用户。原始项目基于Java,但还有其他一些实现,例如我个人使用的NLucene for .NET。
回答
Sphinx可能是最有效和可扩展的选项,而SQLite FTS3是最简单的选项。
回答
虽然不在进程中,但Solr速度非常快(基于Lucene),并且可以从任何平台(HTTP)轻松访问