Manticore可以在没有MySQL的情况下工作吗?

这是一个常见的问题,也是一个误解,认为Sphinx和Manticore都需要MySQL数据库。这并不正确,在本文中我们将讨论如何独立于MySQL使用搜索引擎。

虽然大多数用户使用MySQL数据库(或其变体如MariaDB/Percona Server),而Sphinx的目标是MySQL用户——因为实现了一个数据库插件(SphinxSE),并且查询协议之一是基于mysql的,但该软件并不是专门为MySQL设计的,而是一个通用的搜索工具。

编译Sphinx和Manticore并不需要(或曾经需要)任何MySQL库。mysql lib客户端仅在索引器的mysql驱动程序中是必需的。然而,即使没有这个,您仍然可以使用ODBC驱动程序从MySQL数据库中索引数据。SphinxQL的MySQL协议是原生实现的,不需要MySQL头文件或库。

索引

Manticore实现了几个可以从数据库获取数据的驱动程序。特定的数据库驱动程序可用于MySQL、MSSQL和PostgreSQL,并且还支持ODBC。MySQL和PostgreSQL驱动程序需要各自的客户端库。MSSQL驱动程序需要ODBC客户端库。然而,Manticore可以在不支持某些驱动程序或根本不支持任何驱动程序的情况下构建。

除了数据库驱动程序之外,还有通过XML管道和CSV/TSV驱动程序提供的更通用的数据源驱动程序。通过这些,数据可以从非关系型仓库(如NoSQL)或简单的文件存储中提取。XML驱动程序要求XML文件以特定格式提供。在CSV/TSV的情况下,唯一的要求是第一列为文档ID。在这些驱动程序的情况下,Manticore不需要文件的完整路径,而是执行一个文件并期望响应为XML/CSV/TSV文件。这可以用于处理多个文件或包含文件的整个文件夹。

搜索

第一个API实现是SphinxAPI,这是一个自定义的二进制协议,官方为几种编程语言开发了客户端库,第三方也将客户端库移植到其他语言。虽然它没有所有功能,但SphinxAPI协议确实提供了完整的搜索实现。SphinxAPI协议(也在分布式索引中内部使用)的问题是保持客户端库的更新。SphinxQL协议变得更受欢迎,因为大多数用户愿意使用mysql客户端/连接器,并且在守护进程升级之间不需要任何维护——相比之下,SphinxAPI需要保持更新,特别是为了访问新实现的功能。SphinxAPI客户端在几种流行语言中得到了官方实现,如PHP、Python、Java和Ruby,但也存在第三方移植到其他语言的版本。

从Sphinx 2.3开始,添加了HTTP协议,但它仅作为sql或SphinxAPI格式搜索的代理。这在Manticore中得到了改进,新增了使用JSON作为请求和响应有效负载的端点。由于它像常规Web服务一样工作,响应可以通过反向代理服务器(例如nginx)进行代理或缓存。目前,JSON API提供了用于搜索、数据操作和渗透的路径,未来将实现更多命令。

安装Manticore Search

安装Manticore Search