Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Integrando Sphinx ao MySQL


Não posso fazer isso. Sphinx (quando ativado para sphinxQL) apenas fornece um servidor que parece como um mysql - ou seja, ele usa o mesmo protocolo de comunicação - principalmente para poder reutilizar bibliotecas cliente mysql, em vez de ter que fazer um novo apenas para sphinx.

São 'servidores' diferentes. Você se conecta a um servidor mysql para executar comandos mysql; você se conecta ao servidor sphinx para executar comandos sphinxQL.

O aplicativo teria que se conectar a cada 'servidor' separadamente. Imagine que o sphinx fosse algo como postgres, você claramente não se conecta ao mysql e espera poder executar o postgresql.

No entanto, existe o SphinxSE - que é um mecanismo de armazenamento mysql falso. Você o instala no mysql e pode criar uma tabela usando esse mecanismo. Então você executa consultas mysql nesta tabela, sob o capô estão os contatos de um servidor sphinx em execução. Então, para o mysql, parece uma tabela que contém dados, isso é mais útil porque pode 'juntar' essa tabela de pesquisa com a tabela de dados original para obter resultados e os dados originais em uma consulta mysql.

O aplicativo não precisa se conectar à própria esfinge. SphinxSE faz isso por você.

http://sphinxsearch.com/docs/current.html#sphinxse

Não. Você mantém os dados originais onde estão, usando qualquer mecanismo que desejar. Sphinx apenas fornece um 'índice' - ele não armazena os dados originais*. Não é um banco de dados como tal, apenas fornece consultas rápidas com sua indexação altamente otimizada.

Basicamente, você pede ao sphinx os ids exclusivos dos documentos que correspondem a uma determinada consulta. Em seguida, use esses IDs para pesquisar os dados. SphinxAPI, sphinxSE e sphinxQL são apenas três mecanismos diferentes para fazer isso.

Não. Uma única instância sphinx pode hospedar muitos índices. E um índice pode ter muitas fontes. Então pode apenas criar um índice por tabela. Ou se você deseja principalmente pesquisá-los juntos, pode apenas criar um índice amalgamado.

--** Edite para responder à pergunta nos comentários:**

Você provavelmente definiria um índice de esfinge por tabela. Então você precisaria de um par fonte/índice para cada tabela. (a menos que você queira indexar todas as tabelas em um índice, o que também é possível.

Ele não pode ler as tabelas em si e criar o arquivo de configuração, você deve definir cada índice individualmente.

Não. Não é um proxy.

Basicamente sim. O cliente se conectará a ele da mesma forma que se conecta a um servidor mysql.

Não é impossível. Conecte-se ao servidor mysql, para executar consultas mysql. Conecte-se a searchd para executar consultas sphinxQL.

Duas conexões, uma por servidor.

Não sei. Pode ser um problema de firewall.