Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

Plurales con buscador full text

Estas en el tema de Plurales con buscador full text en el foro de Mysql en Foros del Web. Hola!, estoy intentando tener plurales en las búsquedas full-text, ya que si busco "neurona" no aparecen resultados de "neuronas". La única forma que encontré fué ...
  #1 (permalink)  
Antiguo 17/01/2013, 21:22
Avatar de xarmagedonx  
Fecha de Ingreso: marzo-2009
Mensajes: 360
Antigüedad: 15 años, 1 mes
Puntos: 29
Plurales con buscador full text

Hola!, estoy intentando tener plurales en las búsquedas full-text, ya que si busco "neurona" no aparecen resultados de "neuronas".

La única forma que encontré fué con busquedas booleanas:

Código MySQL:
Ver original
  1. AGAINST ('$frase*' IN BOOLEAN MODE)

El problema es que esta forma reduce la calidad de resultados, por ejemplo si busco "cara", también aparecerá "Caracas", "carancho", "carroza", entre otras.

Actualmente estoy utilizando busquedas full-text que son las mejores que encontré, pero no sirve con plurales.

¿Existe alguna forma de que busque plurales?, ¿o se puede combinar de alguna manera con otro tipo de búsquedas?.
  #2 (permalink)  
Antiguo 18/01/2013, 02:03
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Plurales con buscador full text

Los caracteres comodin para LIKE son

Carácter Descrición
% Coincidencia de cualquier número de caracteres, incluso cero caracteres
_ Coincide exactemente un carácter

no estoy seguro que se apliquen igual....

Si asi fuese, usando _ en lugar de * reducirias los resultados erroneos "cara" -> "caras" no Caracas... tampoco "cara"

Pero el problema es que no todos los plurales se forman igual "plural" - > "prurales" con lo que sigues con el problema.

si hay solución la encontrarás en

12.5.2. Regular Expressions
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.

Última edición por quimfv; 18/01/2013 a las 03:57
  #3 (permalink)  
Antiguo 18/01/2013, 03:30
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Plurales con buscador full text

Expresiones regulares y comodines no aplican para MATCH() AGAINST().
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 18/01/2013, 11:13
Avatar de xarmagedonx  
Fecha de Ingreso: marzo-2009
Mensajes: 360
Antigüedad: 15 años, 1 mes
Puntos: 29
Respuesta: Plurales con buscador full text

Gracias por la respuesta, leí que con rlike se puede utilizar para lograr conseguir plurales, este es un ejemplo:

Código MySQL:
Ver original
  1. SELECT * FROM webs WHERE webkeywords RLIKE '[[:<:]]mariposa[s|es]*[[:>:]]'= 1

Sin embargo no logré hacer que funcione con una variable en vez de mariposa, probé de la siguiente manera:

Código MySQL:
Ver original
  1. SELECT * FROM webs WHERE webkeywords RLIKE '[[:<:]]\'$frase\'[s|es]*[[:>:]]'= 1

Pero no muestra nada, deja un largo espacio en blanco. La variable $frase contiene lo buscado por el usuario.

Saludos!
  #5 (permalink)  
Antiguo 18/01/2013, 12:20
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Plurales con buscador full text

1) tu problema con RLIKE es, pienso, de PhP. Pide ayuda en el foro PHP y verás qué fácil de solucionar. Aquí en eso no podemos ayudarte: son normas del foro.

2) De todas formas, yo ahora me he preguntado lo siguiente. Si cuando alguien escribe en el input mariposa, tú generas con programación una cadena con esa palabra, y otra vez esa palabra con el añadido de una 's' o 'es' según corresponda, y luego buscas esa cadena con los dos términos usando tu índice FULL-TEXT
'mariposa mariposas'
¿qué pasaría? En realidad, esto es como si buscaras con OR, pero para FULL-TEXT. Creo que funcionará y será más eficiente que las expresiones regulares.

El problema, como siempre, es la naturaleza de algunos plurales especiales (mira aquí http://es.wikipedia.org/wiki/Formaci...n_espa%C3%B1ol), y el hecho de que tampoco sabes si la palabra está escrita en plurar o singular por quien busca. Si tú controlas las palabras buscadas, puedes pedir que se usen palabras en singular y tú resuelves el plural con programación y con base de datos para las excepciones (los datos irregulares).

En fin, es una propuesta.

Etiquetas: full, resultados
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 15:31.