Mysql
 sql >> Database >  >> RDS >> Mysql

Integrazione di Sphinx in MySQL

Non posso farlo. Sphinx (se abilitato per sphinxQL) ti dà solo un server che sembra come uno mysql - cioè usa lo stesso protocollo di comunicazione - principalmente quindi può semplicemente riutilizzare le librerie client mysql, piuttosto che doverne crearne uno nuovo solo per sphinx.

Sono diversi "server". Ti connetti a un server mysql per eseguire i comandi mysql; ti connetti al server sphinx per eseguire i comandi sphinxQL.

L'applicazione dovrà connettersi a ciascun 'server' separatamente. Immagina che sphinx fosse qualcosa come postgres, chiaramente non ti connetti a mysql e ti aspetti di essere in grado di eseguire postgresql.

Tuttavia c'è SphinxSE, che è un falso motore di archiviazione MySQL. Lo installi in mysql e puoi quindi creare una tabella usando questo motore. Quindi esegui query mysql su questa tabella, sotto il cofano ci sono i contatti di un server sphinx in esecuzione. Quindi a mysql sembra una tabella che contiene dati, questo è molto utile perché può quindi "unire" questa tabella di ricerca con la tabella di dati originale per ottenere risultati e dati originali in una query mysql.

L'applicazione non deve quindi connettersi alla sfinge stessa. SphinxSE lo fa per te.

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

No. Mantieni i dati originali dove si trovano, usando qualsiasi motore ti piaccia. Sphinx fornisce solo un 'indice' - non memorizza i dati originali*. Non è un database in quanto tale, fornisce solo query veloci con la sua indicizzazione altamente ottimizzata.

Fondamentalmente chiedi a sphinx gli ID univoci dei documenti che corrispondono a una determinata query. Quindi usa quegli ID per cercare i dati. SphinxAPI, sphinxSE e sphinxQL sono solo tre diversi meccanismi per farlo.

No. Una singola istanza sphinx può ospitare molti indici. E un indice può avere molte fonti. Quindi puoi semplicemente creare un indice per tabella. Oppure, se vuoi cercarli principalmente insieme, puoi semplicemente creare un indice amalgamato.

--** Modifica per rispondere alla domanda nei commenti:**

Probabilmente definiresti un indice sfinge per tabella. Quindi avresti bisogno di una coppia sorgente/indice per ogni tabella. (a meno che tu non voglia indicizzare tutte le tabelle in un indice, cosa possibile anche.

Non può leggere le tabelle stesse e creare file di configurazione, devi definire ogni indice individualmente.

No. Non un proxy.

Fondamentalmente sì. Il client si collegherà ad esso nello stesso modo in cui si connette a un server mysql.

No. Impossibile. Collegarsi a mysql-server, per eseguire query mysql. Connetti a ricercato per eseguire query sphinxQL.

Due connessioni, una per server.

Non lo so. Potrebbe essere un problema di firewall.