Mam MySQL i Sphinx zainstalowane i działające poprawnie na serwerze LNMP. Teraz chciałbym zintegrować pod-zapytanie Sphinx z istniejącą kwerendą MySQL.
Przykład:
SELECT * FROM mysql_table
JOIN (SELECT id FROM sphinx_index MATCH ("keyword")) AS match_table
ON match_table.id = mysql_table.id
czy to możliwe? Jeśli nie, powinienem wykonać Sphinx osobno, a następnie użyć WHERE IN
w zapytaniu MySQL, czy może to zabije dodatkową efektywność, którą otrzymuję od Sphinx?
Odpowiedzi:
1 dla odpowiedzi № 1Użyj SphinxSE http://sphinxsearch.com/docs/current.html#sphinxse-overview
Wtedy byłoby
SELECT * FROM mysql_table
JOIN (SELECT id FROM sphinx_index WHERE query="keyword") AS match_table
ON match_table.id = mysql_table.id
Mimo że
SELECT * FROM sphinx_index INNER JOIN mysql_table USING (id) WHERE query="keyword"
jest krótszy i bardziej zwięzły. I lepiej utrzymuje kolejność wyników.
Gdzie "sphinx_index" to tabela SphinxSE, która wskazuje na bazowy indeks indeksu Sphinx.
0 dla odpowiedzi nr 2
Wygląda na to, że znalazłem odpowiedź na inne pytanie:
Odczytując to, wygląda na to, że Sphinx i MySQL nie są tak zintegrowane, jak się spodziewałem. Muszą być używane na oddzielnych połączeniach, więc nie można łączyć zapytań.