关于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 -- 全文搜索包含在最新版本中。


推荐阅读

    linux命令删除用户组?

    linux命令删除用户组?,管理,密码,系统,用户组,用户,概念,命令,文件,管理员,

    linux截取进程命令?

    linux截取进程命令?,系统,工作,状态,信息,进程,软件,地址,命令,标准,实时,lin

    linux退出进程命令?

    linux退出进程命令?,系统,软件,名称,代码,进程,报告,数字,暂停,状态,平台,lin

    linux注销命令用户?

    linux注销命令用户?,系统,服务,密码,地址,工作,命令,状态,工具,信息,基础,lin

    linux切换进程命令?

    linux切换进程命令?,服务,系统,工具,地址,命令,基础,工作,标准,情况,状态,Lin

    linux查询命令进程?

    linux查询命令进程?,系统,名称,总量,情况,状态,进程,材料,工具,电脑,数据,怎

    linux命令如何杀进程?

    linux命令如何杀进程?,状态,系统,暂停,管理,进程,命令,平台,信息,工具,电脑,L

    linux常用命令查进程?

    linux常用命令查进程?,系统,情况,软件,工具,实时,代码,电脑,地址,总量,状态,

    linux命令所有用户?

    linux命令所有用户?,系统,密码,信息,情况,名称,命令,用户,时间,地址,位置,如

    linux命令进入用户?

    linux命令进入用户?,系统,密码,用户,地址,信息,软件,命令,用户名,联系方式,

    linux命令用户管理?

    linux命令用户管理?,系统,密码,管理,工作,信息,地址,工具,命令,用户,基础,LIn

    linux命令进程状态?

    linux命令进程状态?,系统,状态,进程,命令,数据,管理,软件,名称,信息,参数,Lin

    linux用户与组的命令?

    linux用户与组的命令?,管理,系统,名称,用户组,密码,用户,命令,情况,信息,单

    linux查进程命令软件?

    linux查进程命令软件?,系统,软件,状态,进程,信息,命令,名称,数据,基础,表示,l

    linux添加用户的命令?

    linux添加用户的命令?,密码,系统,软件,联系方式,用户,新增,信息,管理人员,

    linux用户退出的命令?

    linux用户退出的命令?,系统,密码,命令,用户,发行,电脑,第三,地址,软件,信息,l

    linux看系统用户命令?

    linux看系统用户命令?,系统,信息,密码,命令,服务,名称,网络,情况,软件,工具,L

    linux赋权用户命令?

    linux赋权用户命令?,系统,密码,用户,权限,地址,状态,数字,软件,管理,电脑,Lin

    linux中进程的命令?

    linux中进程的命令?,系统,进程,管理,状态,情况,信息,命令,平台,数据,实时,lin