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

Integrering af Sphinx til MySQL

Kan ikke gøre det. Sphinx (når den er aktiveret for sphinxQL) giver dig bare en server, der ser ud som en mysql - dvs. den bruger den samme kommunikationsprotokol - hovedsageligt så kan bare genbruge mysql-klientbiblioteker, i stedet for at skulle lave en ny kun til sfinx.

De er forskellige 'servere'. Du opretter forbindelse til en mysql-server for at køre mysql-kommandoer; du forbinder til sphinx-serveren for at køre sphinxQL-kommandoer.

Applikationen skal oprette forbindelse til hver 'server' separat. Forestil dig, at sfinx var noget som postgres, du forbinder tydeligvis ikke til mysql og forventer at kunne køre postgresql.

Men der er SphinxSE - som er en falsk mysql-lagringsmotor. Du installerer det i mysql, og du kan derefter oprette en tabel ved hjælp af denne motor. Så kører du mysql-forespørgsler mod denne tabel, under motorhjelmen er kontakter en kørende sfinx-server. Så for mysql ligner det en tabel, der indeholder data, dette er mest nyttigt, fordi det så kan 'join' denne søgetabel med den originale datatabel for at få resultater og de originale data i en mysql-forespørgsel.

Applikationen behøver så ikke at oprette forbindelse til sphinx selv. SphinxSE gør det for dig.

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

Nej. Du beholder de originale data, hvor de er, ved at bruge den motor, du kan lide. Sphinx giver bare et 'indeks' - det gemmer ikke de originale data*. Det er ikke en database som sådan, det sørger bare for hurtig forespørgsel med dens yderst optimerede indeksering.

Grundlæggende beder du Sphinx om de unikke id'er for dokumenter, der matcher en bestemt forespørgsel. Brug derefter disse id'er til at slå dataene op. SphinxAPI, sphinxSE og sphinxQL er blot tre forskellige mekanismer til at gøre det.

Nej. En enkelt sfinx-instans kan være vært for mange indekser. Og et indeks kan have mange kilder. Så kan bare oprette et indeks pr. tabel. Eller hvis du primært ønsker at søge dem sammen, kan du bare oprette et samlet indeks.

--** Rediger for at besvare spørgsmål i kommentarer:**

Du ville sandsynligvis definere et sfinxindeks pr. tabel. Så du skal bruge et kilde/indeks-par for hver tabel. (medmindre du ønskede at indeksere alle tabeller i ét indeks, hvilket også er muligt.

Det kan ikke læse selve tabellerne og oprette konfigurationsfil, du skal definere hvert indeks individuelt.

Nej. Ikke en fuldmægtig.

Som udgangspunkt ja. Klienten vil oprette forbindelse til den på samme måde, som den forbinder til en mysql-server.

Nej. Umuligt. Opret forbindelse til mysql-server for at køre mysql-forespørgsler. Opret forbindelse til searchd for at køre sphinxQL-forespørgsler.

To forbindelser, en per server.

Ved ikke. Det kan være et firewall problem.




  1. Indsæt fil i mysql Blob

  2. WordPress links alle omdirigerer til dobbelt URL

  3. MySQL-forbindelse tegnsæt problemer

  4. Problem:Får forskellige resultater fra SUM-forespørgsler