Mysql
 sql >> Base de données >  >> RDS >> Mysql

Intégrer Sphinx à MySQL

Je ne peux pas faire ça. Sphinx (lorsqu'il est activé pour sphinxQL) vous donne juste un serveur qui regarde comme un mysql - c'est-à-dire qu'il utilise le même protocole de communication - peut donc simplement réutiliser les bibliothèques client mysql, plutôt que d'avoir à en créer un nouveau juste pour sphinx.

Ce sont des "serveurs" différents. Vous vous connectez à un serveur mysql pour exécuter des commandes mysql; vous vous connectez au serveur sphinx pour exécuter les commandes sphinxQL.

L'application devrait se connecter à chaque 'serveur' séparément. Imaginez simplement que sphinx était quelque chose comme postgres, vous ne vous connectez clairement pas à mysql et vous vous attendez à pouvoir exécuter postgresql.

Cependant, il existe SphinxSE - qui est un faux moteur de stockage mysql. Vous l'installez dans mysql, et vous pouvez ensuite créer une table en utilisant ce moteur. Ensuite, vous exécutez des requêtes mysql sur cette table, sous le capot se trouvent les contacts d'un serveur sphinx en cours d'exécution. Donc, pour mysql, cela ressemble à une table contenant des données, ce qui est très utile car peut ensuite "joindre" cette table de recherche avec la table de données d'origine pour obtenir les résultats et les données d'origine dans une requête mysql.

L'application n'a alors pas besoin de se connecter au sphinx lui-même. SphinxSE le fait pour vous.

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

Non. Vous conservez les données d'origine là où elles se trouvent, en utilisant le moteur de votre choix. Sphinx fournit simplement un "index" - il ne stocke pas les données d'origine*. Ce n'est pas une base de données en tant que telle, elle permet simplement une recherche rapide grâce à son indexation hautement optimisée.

Fondamentalement, vous demandez à sphinx les identifiants uniques des documents correspondant à une certaine requête. Utilisez ensuite ces identifiants pour rechercher les données. SphinxAPI, sphinxSE et sphinxQL ne sont que trois mécanismes différents pour le faire.

Non. Une seule instance de sphinx peut héberger plusieurs index. Et un index peut avoir de nombreuses sources. Vous pouvez donc simplement créer un index par table. Ou si vous souhaitez principalement les rechercher ensemble, vous pouvez simplement créer un index fusionné.

--** Modifier pour répondre à la question dans les commentaires :**

Vous définiriez probablement un index sphinx par table. Vous auriez donc besoin d'une paire source/index pour chaque table. (sauf si vous vouliez indexer toutes les tables dans un index, ce qui est également possible.

Il ne peut pas lire les tables lui-même et créer un fichier de configuration, vous devez définir chaque index individuellement.

Non. Pas un proxy.

Fondamentalement oui. Le client s'y connectera de la même manière qu'il se connecte à un serveur mysql.

Pas impossible. Connectez-vous à mysql-server pour exécuter des requêtes mysql. Connectez-vous à searchd pour exécuter des requêtes sphinxQL.

Deux connexions, une par serveur.

Je ne sais pas. Peut-être un problème de pare-feu.