Instalar Sphinx
Sólo tiene que ejecutar los siguientes tres comandos en su servidor o máquina de desarrollo para instalar Sphinx:
./configure make sudo make install
Eso configurará Sphinx por defecto para su uso con MySQL. Si desea utilizarlo con PostgreSQL, a continuación, ejecute configure
con la siguiente bandera:
./configurar --con-pgsql
Nota: puede descargar la esfinge desde //sphinxsearch.com/descargas//
Instalar Thinking Sphinx
Aunque hay un par de Esfinges en Rails, he optado por Thinking Sphinx, ya que parece ser el más popular y completo.
Así que puedes instalarlo como un plugin Rails usando script/plugin install
mando:
script/plugin install git://github.com/freelancing-god/thinking-sphinx.git
Escribiendo código para usar la búsqueda sphinx:
Ahora necesitamos indexar nuestros modelos. Esto consiste en añadir unas pequeñas líneas de código en cada modelo en el que quieras poder buscar. Digamos que tenemos una aplicación Blog (¡no la tiene todo el mundo!), que tiene un modelo Post. Y ese modelo Post contiene el habitual título
y descripción
campos. Por lo tanto, añadimos el siguiente fragmento de código debajo de nuestras declaraciones de asociación en
aplicación/modelos/post.rb
:
define_index do índices título, descripción end
Estas tres breves líneas le dirán a Thinking Sphinx que indexe el archivo título
y descripción
campos del Correo
y nos permitirá buscar en todos nuestros mensajes. Ahora sólo tenemos que indexar e iniciar Sphinx. Y Thinking Sphinx hace esto muy fácil con sus útiles tareas Rake.
Sólo ejecuta esto:
rake ts:rebuild
Eso detendrá (si está iniciado), indexará e iniciará Sphinx por usted. Ahora tenemos que crear un formulario de búsqueda rápida. Esto será finalmente una búsqueda global del sitio, y no sólo una búsqueda Post. Así que vamos a crear un nuevo controlador:
script/generar controlador de búsqueda
A continuación, cree una vista en app/views/búsqueda/index.html.erb
y coloque el formulario dentro de él:
Ahora, en su nuevo controlador de búsqueda, cree un nuevo controlador crear
acción:
def create @posts = Post.search params[:search] end
Crea tu crear
ver en app/views/buscar/crear.html.erb
con un poco de código para mostrar su @posts
de la forma habitual.
Nota:
Incluso podemos paginar nuestros resultados utilizando el plugin WillPaginate:
definitivamente crear
@posts = Post.search params[:search], :page => params[:page], :per_page => 10 end