Forum: Rails-ES Busquedas de partes de una palabra con Sphinx

Announcement (2017-05-07): www.ruby-forum.com is now read-only since I unfortunately do not have the time to support and maintain the forum any more. Please see rubyonrails.org/community and ruby-lang.org/en/community for other Rails- und Ruby-related community platforms.
9b3b1fd6baa8379638d8399ecd60045d?d=identicon&s=25 Emili Parreño (emili)
on 2008-11-07 09:10
(Received via mailing list)
Necesito "tunear" las busquedas en un proyecto y hacer matching con
partes
de una palabra y no con la palabra entera, vaya, al más puro estilo
"campo
LIKE %quey%". Utilizo Ultrasphinx y he estado mirando la documentación
pero
no encuentro la manera de especificarle esta opción.
Podeis echarme una mano?
03c822532859dccc95a0808768a3f3ff?d=identicon&s=25 Ariel (Guest)
on 2008-11-07 11:31
(Received via mailing list)
Hola Emili,

Usando el caracter comodin asterisco (*) en la cadena de búsqueda es
como
funcionan las búsquedas parciales en Sphinx. Con lo cual podés utilizar
el
string "*query*" para el ejemplo que distes.
Un consejo: te recomiendo ThinkingSphinx [1] en lugar de UltraSphinx,
tiene
una sintaxis un poco más "rubysta" y es quizás más fácil de configurar.

Saludos,

Ariel Diaz

[1] http://ts.freelancing-gods.com/

El 7 de noviembre de 2008 5:10, Emili Parreño <emili@eparreno.com>
escribió:
9b3b1fd6baa8379638d8399ecd60045d?d=identicon&s=25 Emili Parreño (emili)
on 2008-11-07 15:38
(Received via mailing list)
Gracias Ariel por la recomendación, lo estoy probando y me gusta mucho.
Respecto a la solución que me has dado, no se si tu lo has probado pero
a mi
no me funciona. He instalado thinking_sphinx i cuando hago la cosulta le
pongo los asteriscos

User.search "*emili*"

Debería devolver 1 resultado que es emiliabc, pero no lo encuentra.



El 7 de noviembre de 2008 11:30, Ariel
<arieldiazbermejo@gmail.com>escribió:
7223c62b7310e164eb79c740188abbda?d=identicon&s=25 Xavier Noria (fxn)
on 2008-11-07 16:19
(Received via mailing list)
2008/11/7 Emili Parreño <emili@eparreno.com>:

> Gracias Ariel por la recomendación, lo estoy probando y me gusta mucho.
> Respecto a la solución que me has dado, no se si tu lo has probado pero a mi
> no me funciona. He instalado thinking_sphinx i cuando hago la cosulta le
> pongo los asteriscos
> User.search "*emili*"
> Debería devolver 1 resultado que es emiliabc, pero no lo encuentra.

Sphinx tiene varios tipos de busqueda. Hay que habilitar ese tipo, que
no es el que se usa por defecto. No recuerdo como se hace de memoria
pero va el mail por si te ayuda a avanzar, el keyword seria "star" o
por ahi cerca.
9b3b1fd6baa8379638d8399ecd60045d?d=identicon&s=25 Emili Parreño (emili)
on 2008-11-07 17:35
(Received via mailing list)
Solucionado, al final hay que acabar simpre indagando en el código. Os
cuento:Por defecto sphinx hace el match completo con la palabra/s que le
pasemos en la query. Para poder buscar fragmentos de palabras hay que
habilitar el parámetro  enable_star, en el archivo de configuración, en
la
seccion index:
  enable_star    = 1
  min_infix_len = 1  min_prefix_len = 1

min_prefix_* indica el mínimo de caràcteres que debe haber antes i
despues
del fragmento que buscamos, así si estamos buscando "*ama*",
con los valores de arriba:
"amar" =>  no match
"mama" => no match
"mamar" => match

Si utilizáis el plugin thinking_sphinx, al loro porque hay un bug. En
teoria
si creamos un archivo sphinx.yml en /config podemos sobreescribir los
valores por defecto de los parámetros de configuracion (directorio del
pid,
de los logs, max memoria....), pero el archivo del plugin que parsea el
sphinx.yml y lo convierte en un archivo de configuración de sphinx no
hace
bien precisamente lo que yo necesitaba ( hola Murphy!) habilitar el
enable_star, además de que tiene otros errores.

Voy a enviar un parche al autor para que lo corrija, si necesitáis más
detalles me podéis enviar un email.

Hoy ya me he ganado la cena.




El 7 de noviembre de 2008 16:18, Xavier Noria <fxn@hashref.com>
escribió:
This topic is locked and can not be replied to.