sql >> Databáze >  >> RDS >> Mysql

Integrace Sphinx do MySQL

To nejde. Sphinx (pokud je povolena pro sphinxQL) vám poskytne server, který vypadá jako mysql - tj. používá stejný komunikační protokol - hlavně proto může znovu použít klientské knihovny mysql, místo aby bylo nutné vytvářet nové pouze pro sfingu.

Jsou to různé „servery“. Připojíte se k serveru mysql a spustíte příkazy mysql; připojíte se k serveru sphinx a spustíte příkazy sphinxQL.

Aplikace by se musela připojit ke každému „serveru“ samostatně. Jen si představte, že sphinx byla něco jako postgres, zjevně se nepřipojujete k mysql a očekáváte, že budete moci spustit postgresql.

Existuje však SphinxSE - což je falešný mysql storage engine. Nainstalujete jej do mysql a pomocí tohoto enginu pak můžete vytvořit tabulku. Poté spustíte mysql dotazy proti této tabulce, pod kapotou jsou kontakty běžícího serveru sphinx. Takže pro mysql to vypadá jako tabulka, která obsahuje data, to je nejužitečnější, protože pak můžete „spojit“ tuto vyhledávací tabulku s původní tabulkou dat a získat výsledky a původní data v jednom dotazu mysql.

Aplikace se pak nemusí připojovat k samotné sfingě. SphinxSE to udělá za vás.

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

Ne. Uchováte původní data tam, kde jsou, pomocí jakéhokoli enginu, který se vám líbí. Sphinx poskytuje pouze „index“ – neukládá původní data*. Nejedná se o databázi jako takovou, pouze umožňuje rychlé vyhledávání pomocí vysoce optimalizovaného indexování.

V podstatě žádáte sphinx o jedinečné ID dokumentů odpovídajících určitému dotazu. Poté použijte tato ID k vyhledání dat. SphinxAPI, sphinxSE a sphinxQL jsou jen tři různé mechanismy, jak toho dosáhnout.

Ne. Jedna instance sfingy může hostit mnoho indexů. A index může mít mnoho zdrojů. Takže stačí vytvořit jeden index na tabulku. Nebo pokud je chcete prohledávat hlavně společně, stačí vytvořit jeden sloučený index.

--** Upravte pro odpověď na otázku v komentářích:**

Pravděpodobně byste definovali jeden index sfingy na tabulku. Pro každou tabulku byste tedy potřebovali pár zdroj/index. (pokud jste nechtěli indexovat všechny tabulky v jednom indexu, což je také možné.

Neumí číst tabulky samotné a vytvořit konfigurační soubor, musíte definovat každý index samostatně.

Ne. Není proxy.

V podstatě ano. Klient se k němu připojí stejným způsobem, jakým se připojuje k serveru mysql.

Ne. Nemožné. Připojte se k serveru mysql a spusťte dotazy mysql. Chcete-li spustit dotazy sphinxQL, připojte se k searchd.

Dvě připojení, jedno na server.

nevím. Může to být problém s firewallem.




  1. Jak mohu mít kontrolní omezení, které odkazuje na jinou tabulku?

  2. MySQL dotaz - spojte 3 tabulky dohromady, seskupte je podle jednoho sloupce a počítejte pro další 2

  3. MySQL -PHP vložit DATETIME

  4. Problém s aktivním dotazováním na záznamy a heroku.