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

cantidad de veces que se encuentra una palabra

Estas en el tema de cantidad de veces que se encuentra una palabra en el foro de Bases de Datos General en Foros del Web. hola, estoy haciendo un pequeño buscador para mi pagina, arcaico pero kiero hacerlo yo mismo. La consulta en la base de datos no es problema, ...
  #1 (permalink)  
Antiguo 22/09/2008, 21:12
Avatar de leac3  
Fecha de Ingreso: abril-2007
Ubicación: Valencia, pero mi mente y corazon estan en San Francisco.
Mensajes: 147
Antigüedad: 17 años, 1 mes
Puntos: 4
cantidad de veces que se encuentra una palabra

hola, estoy haciendo un pequeño buscador para mi pagina, arcaico pero kiero hacerlo yo mismo.

La consulta en la base de datos no es problema, el problema lo tengo en lo siguiente. Quisiera ordenar los resultados por la cantidad de veces que encuentre cada palabra escrita por el usuario.

por ejemplo si el usuario escribió "caja", entonces buscaré eso en mi campo "contenido" con el LIKE, pero el ORDER BY u otro comando para SORTING, quisiera que se usara a partir de cuantas veces se encontró la palabra "caja" dentro del campo "contenido". ¿Existe algun comando esoterico de mysql que haga esto?

Estaba revisando el COUNT en la pagina oficial, pero no se si se pueda usar de alguna forma avanzada para buscar la cantidad de coincidencias de una palabra especifica.

  #2 (permalink)  
Antiguo 24/09/2008, 16:29
Avatar de leac3  
Fecha de Ingreso: abril-2007
Ubicación: Valencia, pero mi mente y corazon estan en San Francisco.
Mensajes: 147
Antigüedad: 17 años, 1 mes
Puntos: 4
Respuesta: cantidad de veces que se encuentra una palabra

ya consegui lo que buscaba: aqui la respuesta a este esoterico asunto.

SELECT *, (LENGTH(campo) - LENGTH(replace(campo, 'gato', '')))/LENGTH('gato') AS num FROM buscar
  #3 (permalink)  
Antiguo 25/09/2008, 01:20
 
Fecha de Ingreso: febrero-2007
Mensajes: 1.292
Antigüedad: 17 años, 3 meses
Puntos: 13
Respuesta: cantidad de veces que se encuentra una palabra

Funcionará pero si campo es texto libre, el rendimiento decrecerá exponencialmente al aumentar el numero de registros.

En mysql creo que tienes FULL-TEXT. Creo que vale para lo que quieres hacer.

Salu2
  #4 (permalink)  
Antiguo 26/09/2008, 01:22
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: cantidad de veces que se encuentra una palabra

es cierto que los índices FULL-TEXT tienen en cuenta el número de apariciones de las palabras para establecer la relevancia (sólo en tablas MyIsam), pero no te devuelven el dato, y es más, si son muchas las veces que aparece una palabra, no la tienen en cuenta.
Yo, en este caso, haría la consulta con la palabra buscada, me traería los datos y entre ellos el campo de texto donde puede aparecer una o más veces. Ya sólo trabajaría con aquellas que contienen la palabra al menos una vez. Con programación cargaría en un array los datos y también el número de veces que aparece la palabra en ese campo (en PHP, por ej., lo buscaría con preg_match_all y sacaría el número haciendo un COUNT de una parte del array resultante) y ordenaría por ese campo del array para luego mostrar los datos de dicho array una vez ordenados(hay otras opciones con PHP). Pero eso es ya programación y materia para otros foros.

Última edición por jurena; 23/02/2009 a las 11:15
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 08:41.