但是我想狮身人面像与我的MySQL服务器整合,使得所有连接到我的SQL服务器的客户端可以做SphinxQL
不能做到这一点。狮身人面像(当为sphinxQL启用时)只是给你一个服务器,看起来像一个mysql的 - 即它使用相同的通信协议 - 主要是可以重新使用mysql客户端库,而不是只为狮身人面像一个新的。
他们是不同的'服务器'。你连接到一个mysql服务器来运行mysql命令;你连接到狮身人面像服务器来运行sphinxQL命令。
应用程序必须分别连接到每个“服务器”。试想一下,狮身人面像是像postgres的东西,你显然不连接到MySQL,并期望能够运行postgresql。
但是有SphinxSE - 这是一个虚假的mysql存储引擎。你将它安装到mysql中,然后你可以使用这个引擎创建一个表。然后你对这个表运行mysql查询,底层是联系一个正在运行的sphinx-server。因此,对于mysql来说,它看起来像一个包含数据的表,这是非常有用的,因为可以将该搜索表与原始数据表“加入”,以便在一个mysql查询中获取结果和原始数据。
应用程序不必连接到狮身人面像本身。 SphinxSE为你做。
http://sphinxsearch.com/docs/current.html#sphinxse
我需要转换从InnoDB的数据库引擎狮身人面像?
No.您可以使用您喜欢的任何引擎,将原始数据保留在原来的位置。狮身人面像只提供一个'索引' - 它不存储原始数据*。它不是一个数据库,只是通过高度优化的索引提供快速查询。
基本上你问狮身人面像的文件与特定查询匹配的唯一ID。然后使用这些ID查找数据。 SphinxAPI,sphinxSE和sphinxQL只是三种不同的机制。
另外,从它看来,狮身人面像只能索引每个配置一(1)数据库表,
号单狮身人面像实例可以承载多个指标。索引可以有很多来源。所以可以为每个表创建一个索引。或者如果你主要想一起搜索它们,可以创建一个合并索引。
- **编辑回复中留言质疑:**
当你说,狮身人面像可容纳多项指标,是它的sphinx.conf配置文件中仅仅依靠?
您可能会为每个表定义一个sphinx索引。所以你需要每个表的源/索引对。 (除非你在一个索引想索引的所有表,whihch也是可能的。
它不能读取表本身,并创建配置文件,您必须单独定义每个索引。
当你说“让你看起来像一个mysql一个服务器的”你的意思是像一个代理,
不,不是的代理。
在我的MySQL客户端可以连接到这个端口的狮身人面像的d客户会认为它是一个MySQL服务器?
基本上是的。客户端将以与连接到mysql服务器的方式连接。
如果是这样,那么我可以同时执行MySQL SQL查询和SphinxQL?
不可能。连接到mysql-server,运行mysql查询。连接到searchd以运行sphinxQL查询。
两个连接,每个服务器一个连接。
为什么我的MySQL工作台无法连接到端口9306,
不知道。可能是防火墙问题。
当你这么说的时候,sphinx可以托管很多索引,它是仅仅依赖于sphinx.conf配置文件吗?其实我需要重新说明我的问题,我的问题应该是sphinx可以在一个数据库中索引所有表,如果是的话,在配置文件中修改什么? – xybrek 2012-07-28 17:06:59
当你说“给你看起来像一个mysql的服务器”时,你的意思是像一个代理,我的MySQL客户端可以连接到这个Sphinx端口,客户端会认为它是一个MySQL服务器?如果是这样,那么我可以在同一个连接上同时执行MySQL SQL查询和SphinxQL?如果是这样,为什么我的MySQL Workbench无法连接到端口9306,当它可以连接到端口3306(默认MySQL端口)? – xybrek 2012-07-28 17:09:52
回复编辑回复中的额外问题... – barryhunter 2012-07-28 21:06:08