2012-07-28 56 views
6

我想为我的MySQL服务器使用Sphinx全文搜索功能。 我已经根据安装手册设置了本地Sphinx服务,并且可以进行文本搜索。将狮身人面像整合到MySQL

我可以连接到

mysql.exe --host=127.0.0.1 port=9306 

凡口9306的sphinx.conf配置的端口:

searchd { 
... 
listen = 9306:mysql41 
... 
} 

而且做SphinxQL查询。我正在使用发行包附带的默认Sphinx示例数据库。

但是我想狮身人面像与我的MySQL服务器整合,使得所有的客户端连接到我的SQL Server可以做SphinxQL,我想用MySQL的示例数据库来尝试一下sakila

  • 什么步骤来实现这一目标?
  • 我需要将数据库引擎从InnoDB转换为Sphinx吗?
  • 另外,从它看来,Sphinx只能索引一个(1)数据库 表每个配置,我如何确保 MySQL数据库中的所有表得到索引?

回答

12

但是我想狮身人面像与我的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,

不知道。可能是防火墙问题。

+0

当你这么说的时候,sphinx可以托管很多索引,它是仅仅依赖于sphinx.conf配置文件吗?其实我需要重新说明我的问题,我的问题应该是sphinx可以在一个数据库中索引所有表,如果是的话,在配置文件中修改什么? – xybrek 2012-07-28 17:06:59

+0

当你说“给你看起来像一个mysql的服务器”时,你的意思是像一个代理,我的MySQL客户端可以连接到这个Sphinx端口,客户端会认为它是一个MySQL服务器?如果是这样,那么我可以在同一个连接上同时执行MySQL SQL查询和SphinxQL?如果是这样,为什么我的MySQL Workbench无法连接到端口9306,当它可以连接到端口3306(默认MySQL端口)? – xybrek 2012-07-28 17:09:52

+0

回复编辑回复中的额外问题... – barryhunter 2012-07-28 21:06:08