9. Nos centramos en Sphinx
● Rápido en el indexado
● Fácil instalación
● Fácil configuración
● Integración 100 % con MySQL
● Integración con PHP y otros lenguajes
● Buena documentación y muchos recursos
13. Configuración
● Único archivo de configuración
● Se definen conexiones, índices y orígenes de datos
● Muy configurables
– Stopwords
– Wordforms
– Exceptions
– Pre-queries
– ...
16. Indexer
● Indexa y comprime los datos
● Índices previamente definidos en
configuración
– Real Time Indexes
– Normales
17. ● Con pocos datos
– Reindexar todo el índice
● Con muchos datos
– Main + Delta
– Se reindexa sólo el delta y el main
ocasionalmente
– No actualiza los datos del main salvo reindexación
completa
24. Búsqueda
API Nativa
– Para múltiples lenguajes
SphinxQL
– Utiliza el conector de MySQL
– Sintaxis muy parecida a MySQL
25. Multitud de modos de búsqueda
– ALL, ANY, PHRASE legacy modes
– MATCH_EXTENDED hace todo el trabajo ahora
● ALL
Query: one two three
Ranker: PROXIMITY
● ANY
Query: "one two three"/1
Ranker: PROXIMITY
● PHRASE
Query: "one two three"
Ranker: PROXIMITY
● BOOLEAN
Query: one two three
Ranker: NONE
26. Ranking Modes
– Solo con Match Extended se puede definir
– Con la opción RANKER en SphinxQL, puedes
indicar tu propia expresión
– ¿Cómo se calcula la relevancia?
37. Y respecto a Symfony 2
● Con la build por defecto de Sphinx tenemos
un cliente para PHP
● ¿Quieres Sphinx como un bundle?
– maninhat / search-sphinxsearchbundle
– leonnleite / Tear-SphinxsearchBundle
– …...
38. ● Pero no es totalmente necesario...
– Copia el archivo en tu carpeta de vendors
– services:
search:
class: SphinxClient
calls:
- [setArrayResult, [true]]
- [setLimits, [0, 20, 1000]]
– $search = $this->get('search');
$results = $search->Query($search_terms, 'myindex');
– Y a funcionar!!