La idea era agregar tiendas en una tabla, indexarlas via elasticsearch, y correr búsquedas vía un simple text_input como google.
Obviamente los resultados debían ser ordenados por default según su ranking. Aquellos registros con un ranking más alto, aparecerían primero.
Store es el modelo que se indexa vía elasticsearch. No hay mucho que hacer, sólo incluir unos módulos que provee la gema tire
.
Con esta integración, cada vez que se crea un registro. Se indexa automáticamente.
Tire, proporciona un rake task para importar registros existentes, que también sirve para re-importar registros a voluntad (digamos, en un cron job, para que tengamos los valores más recientes del ranking de cada registro).
$ rake environment tire:import CLASS=Store FORCE=true
A través de un override del método :search que provee tire al ser incluido en un modelo, podemos crear nuestro query por default, con las opciones que necesitamos, ejemplo: default sort, y default filter.