Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Integration von Sphinx in MySQL

Kann das nicht. Sphinx (wenn für sphinxQL aktiviert) gibt Ihnen einfach einen Server, der aussieht wie ein mysql - dh es verwendet das gleiche Kommunikationsprotokoll - hauptsächlich so, dass es einfach mysql-Client-Bibliotheken wiederverwenden kann, anstatt nur für Sphinx eine neue erstellen zu müssen.

Sie sind verschiedene "Server". Sie verbinden sich mit einem MySQL-Server, um MySQL-Befehle auszuführen; Sie verbinden sich mit dem Sphinx-Server, um SphinxQL-Befehle auszuführen.

Die Anwendung müsste sich mit jedem 'Server' separat verbinden. Stellen Sie sich vor, Sphinx wäre so etwas wie Postgres, Sie stellen eindeutig keine Verbindung zu MySQL her und erwarten, Postgresql ausführen zu können.

Es gibt jedoch SphinxSE - eine gefälschte MySQL-Speicher-Engine. Sie installieren es in mysql und können dann mit dieser Engine eine Tabelle erstellen. Dann führen Sie MySQL-Abfragen gegen diese Tabelle aus, unter der Haube sind Kontakte zu einem laufenden Sphinx-Server. Für MySQL sieht es also wie eine Tabelle aus, die Daten enthält. Dies ist am nützlichsten, da diese Suchtabelle dann mit der ursprünglichen Datentabelle "verknüpft" werden kann, um Ergebnisse und die ursprünglichen Daten in einer MySQL-Abfrage zu erhalten.

Die Anwendung muss sich dann nicht mit Sphinx selbst verbinden. SphinxSE erledigt das für Sie.

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

Nein. Sie behalten die Originaldaten dort, wo sie sind, und verwenden eine beliebige Engine. Sphinx stellt nur einen „Index“ zur Verfügung – es speichert nicht die Originaldaten*. Es ist keine Datenbank im eigentlichen Sinne, sondern sorgt mit seiner hochoptimierten Indizierung nur für schnelles Abfragen.

Grundsätzlich fragen Sie Sphinx nach den eindeutigen IDs von Dokumenten, die einer bestimmten Abfrage entsprechen. Verwenden Sie dann diese IDs, um die Daten nachzuschlagen. SphinxAPI, sphinxSE und sphinxQL sind nur drei verschiedene Mechanismen dafür.

Nein. Eine einzelne Sphinx-Instanz kann viele Indizes hosten. Und ein Index kann viele Quellen haben. So kann nur ein Index pro Tabelle erstellt werden. Oder wenn Sie sie hauptsächlich zusammen suchen möchten, können Sie einfach einen zusammengeführten Index erstellen.

--** Bearbeiten, um auf die Frage in den Kommentaren zu antworten:**

Sie würden wahrscheinlich einen Sphinx-Index pro Tabelle definieren. Sie benötigen also für jede Tabelle ein Quelle/Index-Paar. (es sei denn, Sie wollten alle Tabellen in einem Index indizieren, was auch möglich ist.

Es kann die Tabellen selbst nicht lesen und keine Konfigurationsdatei erstellen, Sie müssen jeden Index einzeln definieren.

Nein. Kein Proxy.

Grundsätzlich ja. Der Client verbindet sich damit genauso, wie er sich mit einem mysql-Server verbindet.

Nein unmöglich. Verbinden Sie sich mit mysql-server, um mysql-Abfragen auszuführen. Stellen Sie eine Verbindung zu searchd her, um sphinxQL-Abfragen auszuführen.

Zwei Verbindungen, eine pro Server.

Weiß nicht. Könnte ein Firewall-Problem sein.