Integrar Sphinx en Symfony2 con Doctrine2
En el grupo de Symfony2 hay una gran cantidad de preguntas entre las que, de vez en cuando, podemos encontrar un buen hilo donde se trata un tema interesante. Entre tanta «paja» (preguntas fáciles de responder solamente leyendo la documentación) es posible que pasemos por alto alguna de estas buenas preguntas junto a sus respuestas.
Voy a intentar recopilar este tipo de hilos y traducirlos al castellano, siempre dejando el enlace al hilo original del grupo de Symfony2 por si hay alguna nueva respuesta.
Para empezar, podemos encontrar como utilizar Sphinx haciendo uso de la api como un servicio en Symfony2.
1) Nos descargamos la api de Sphinx de la página oficial http://sphinxsearch.com/, colocándolo en la carpeta vendor/sphinx-client. Debemos renombrar la clase a SphinxClient.
2) Lo añadimos en el autoload.php
$loader->registerPrefixes(array( // ... 'Sphinx' => __DIR__.'/../vendor/sphinx-client', )); |
3) Añadimos Sphinx como servicio de Symfony2 en el fichero config.yml
services: search: class: SphinxClient calls: - [setArrayResult, [true]] - [setLimits, [0, 20, 1000]] |
4) Por último, podemos hacer uso del servicio desde el controlador de esta forma:
$search = $this->get('search'); $results = $search->Query($search_terms, 'myindex'); |
Evidentemente deberemos leer la documentación de Sphinx para instarlo y configurarlo correctamente. La página oficial es bastante completa en ese sentido.
Hilo original: doctrine2 and sphinx
Aunque el artículo ya tiene un tiempo, me ha venido como anillo al dedo.
Gracias!