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

ordenar por nº de coincidencias

Estas en el tema de ordenar por nº de coincidencias en el foro de Mysql en Foros del Web. Hola a todos, lo que quiero hacer es que cuando haga una búsqueda se ordenen por el numero de coincidencias. el sql es el siguiente: ...
  #1 (permalink)  
Antiguo 24/03/2011, 17:04
 
Fecha de Ingreso: marzo-2011
Mensajes: 2
Antigüedad: 13 años, 1 mes
Puntos: 0
Sonrisa ordenar por nº de coincidencias

Hola a todos, lo que quiero hacer es que cuando haga una búsqueda se ordenen por el numero de coincidencias. el sql es el siguiente:

SELECT * FROM noticias
WHERE
titulo LIKE '%buscar%' or
noticia LIKE '%buscar%' ;

muchisimas gracias!!!
  #2 (permalink)  
Antiguo 25/03/2011, 07:28
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: ordenar por nº de coincidencias

Coincidencias de que?

Los indices FULL TEXT pueden darte alguna solució...
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 25/03/2011, 07:53
 
Fecha de Ingreso: marzo-2011
Mensajes: 2
Antigüedad: 13 años, 1 mes
Puntos: 0
Respuesta: ordenar por nº de coincidencias

cuando hablo de coincidencias me refiero a la busqueda,
por ejemplo si busca la palabra "accidente" y en un registro tiene 4 palabras con esta misma palabra y en otro registro tiene 2 pues que posicione en primer lugar el registro de 4 coincidencias y en 2º lugar el de dos coincidencias
  #4 (permalink)  
Antiguo 25/03/2011, 17:01
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, 4 meses
Puntos: 2658
Respuesta: ordenar por nº de coincidencias

El consejo de Quimfv sigue siendo la mejor opción considerando que los índices FULLTEXT operan en base a relevancia:

Cita:
La función MATCH() realiza una búsqueda de lenguaje natural para cadenas contra una colección de textos. Una colección es un conjunto de una o más columnas incluídas en un índice FULLTEXT . La cadena de búsqueda se da como argumento para AGAINST(). Para cada registro en la tabla MATCH() retorna un valor de relevancia, esto es, una medida de similaridad entre la cadena de búsqueda y el texto en el registro en las columnas mencionadas en la lista MATCH().

[...]

Cuando se usa MATCH() en una cláusula WHERE , como en el ejemplo precedente, los registros retornados se ordenan automáticamente con la relevancia mayor primero. Los valores relevantes son números en coma flotante no negativos. Relevancia cero significa que no tiene similaridad. La relevancia se computa basada en el número de palabras en el registro, el número de palabras únicas en este registro, el número total de palabras en la colección, y el número de documentos (registros) que contienen una palabra particulas.
El único inconveniente es que MATCH()... AGAINST no opera con cadenas parciales. Sólo con palabras completas, por lo cual no se pueden usar expresiones regulares o comodines. Pero resulta mucho mejor que otras soluciones posibles, para tu caso.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: coincidencias
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 00:00.