sql >> Database >  >> RDS >> Mysql

Sphinx integreren in MySQL

Dat kan niet. Sphinx (indien ingeschakeld voor sphinxQL) geeft je gewoon een server die eruit ziet zoals een mysql-bibliotheek - dwz het gebruikt hetzelfde communicatieprotocol - en kan dus gewoon mysql-clientbibliotheken hergebruiken, in plaats van een nieuwe alleen voor sphinx te moeten maken.

Het zijn verschillende 'servers'. U maakt verbinding met een mysql-server om mysql-opdrachten uit te voeren; u maakt verbinding met de sphinx-server om sphinxQL-opdrachten uit te voeren.

De applicatie zou met elke 'server' apart verbinding moeten maken. Stel je voor dat sphinx zoiets was als postgres, je maakt duidelijk geen verbinding met mysql en verwacht dat je postgresql kunt draaien.

Er is echter SphinxSE - wat een nep-mysql-opslagengine is. Je installeert het in mysql en je kunt dan een tabel maken met deze engine. Vervolgens voer je mysql-query's uit op deze tabel, onder de motorkap bevinden zich contacten een draaiende sphinx-server. Dus voor mysql lijkt het op een tabel die gegevens bevat, dit is het handigst omdat deze zoektabel dan kan 'samenvoegen' met de originele gegevenstabel om resultaten en de originele gegevens in één mysql-query te krijgen.

De applicatie hoeft dan geen verbinding te maken met sphinx zelf. SphinxSE doet het voor u.

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

Nee. U houdt de originele gegevens waar ze zijn, met behulp van welke engine u maar wilt. Sphinx biedt alleen een 'index' - het slaat de originele gegevens niet op*. Het is geen database als zodanig, maar zorgt alleen voor snelle query's met zijn sterk geoptimaliseerde indexering.

In principe vraag je aan sphinx om de unieke id's van documenten die overeenkomen met een bepaalde zoekopdracht. Gebruik vervolgens die id's om de gegevens op te zoeken. SphinxAPI, sphinxSE en sphinxQL zijn slechts drie verschillende mechanismen om dat te doen.

Nee. Een enkele sfinx-instantie kan veel indexen hosten. En een index kan veel bronnen hebben. U kunt dus slechts één index per tabel maken. Of als u ze vooral samen wilt doorzoeken, kunt u gewoon één samengevoegde index maken.

--** Bewerken om een ​​vraag in opmerkingen te beantwoorden:**

U zou waarschijnlijk één sfinx-index per tabel definiëren. U hebt dus voor elke tabel een bron/index-paar nodig. (tenzij je alle tabellen in één index wilt indexeren, wat ook mogelijk is.

Het kan de tabellen zelf niet lezen en een configuratiebestand maken, u moet elke index afzonderlijk definiëren.

Nee. Geen volmacht.

In principe wel. De client zal er op dezelfde manier verbinding mee maken als met een mysql-server.

Nee, onmogelijk. Maak verbinding met mysql-server om mysql-query's uit te voeren. Maak verbinding met searchd om sphinxQL-query's uit te voeren.

Twee verbindingen, één per server.

Weet niet. Misschien een firewall-probleem.




  1. Hoe voeg ik een reeks strings toe in een oplopende id in een tabel?

  2. Hoe kan ik alle informatie over een tabel in Oracle krijgen?

  3. Hoe groepen tupels in sql . te vergelijken

  4. MYSQL - hoe een veld bij te werken voor alle items die voortkomen uit group by select-statement