Usuarios On-Line 132
  I n i c i o
  Temas
  • Guías Informatica
  • Artículos
  • Trucos
  • Trucos Juegos
  • Guía Web
  • Webmasters

  •   Directorio Web
  • Novedades
  • Destacados
  • Más Visitados
  • Añadir Web

  •   Software
  • Novedades
  • Destacados
  • Más Descargados
  •  
      Manuales
  • Novedades
  • Destacados
  • Más Descargados

  •   Más Contenidos
  • Zona MSN
  • Foro
  • Más Trucos
  • Seguridad Informática
  • Alojamiento Web
  • Lista de Correo

  •   Novedades Software
    25/05 Mozilla Thunderbird
    25/05 Total Commander
    25/05 PowerArchiver
    25/05 Google Chrome
    25/05 DVDFab



    EVIDALIA HOSTING
    Pack Inicio
    200 MB espacio en disco
    5 GB transferencia/mes
    25 E-Mail's POP3
    mySQL, php, CGI-BIN

    Pack Inicio
    Pack Standard
    600 MB espacio en disco
    15 GB transferencia/mes
    50 E-Mail's POP3
    mySQL, php, CGI-BIN

    Pack Standard


      Guías Informática:  
    Facebook (13)
    Fotografía (13)
    Trucos fotografía y retoque fotográfico.
    Hardware (43)
    Internet (123)
    MSN Messenger (114)
    Multimedia (29)
    Programación (184)
    S. Operativos (538)
    Seguridad (75)
    Software (148)
    Tuenti (8)
    Twitter (5)
    Webmasters (89)
    Inicio
    Más vistos
    Más Remitidos
    Más Imprimidos
    Categoría: Bases de Datos
      Búsquedas con Full-text y MySQL  
    Una (casi) desconocida de las funcionalidades de MySQL, a partir de su versión 3.23.23 es "Full-text" , que permite realizar búsquedas dentro de un campo a partir de una cadena de caracteres.

    Habitualmente, un método de búsqueda sencillo dentro de una tabla pasaba por utilizar LIKE:

    SELECT texto FROM articulos WHERE texto LIKE '%$palabra%'

    El problema aparecía cuando en vez de una sola palabra eran varias las que había que buscar: Si "$palabra" equivalía, por ejemplo, a "dreamweaver ultradev", una frase dentro de los textos almacenados que fuera "dreamweaver y ultradev" no devolvería resultados (por culpa de la "y").

    Para esto sirve Full-text: MySQL se encargará de comparar la cadena que le pasemos con los contenidos de la BD y devolver resultados aproximados. Suena bonito, pero tiene algunas limitaciones (justificadas):

    No devolverá resultados si la palabra aparece demasiadas veces en los registros: si todos nuestros registros (o más del 50%, para ser más exactos) tienen la palabra "dreamweaver", no devolverá resultados.¿Por qué?. esta función está pensada para tablas con muchos registros y no tendría sentido devolverlos todos: ¿es interesante devolver 5.000 resultados a una búsqueda?.
    Por la razón anterior, la consulta omitirá palabras demasiado comunes, como preposiciones y artículos (de, con, a, el)...
    ¿Qué necesitamos para utilizar Full-text?

    Lo primero, que MySQL sea de una versión superior a la 3.23.23.
    Que el campo de la tabla en que vamos a buscar sea del tipo TEXT
    Con estos 2 requisitos, lo primero que necesitaremos será indicarle a MySQL que queremos modificar el campo para que acepte esta función. En nuestro ejemplo vamos a utilizar una sencilla tabla, llamada "artículos", que tiene estos campos.

    id_articulo
    titulo
    texto
    Podemos utilizar cualquiera de los IDE's disponibles para MySQL (MySQLFront ó PHPMyAdmin son válidos), para pasarle a la BD esta sentencia SQL:

    ALTER TABLE articulos ADD FULLTEXT(texto);

    Si lo hemos realizado correctamente, MySQL nos devolverá el OK.

    Con la tabla preparada, llega la hora de aprender cómo se pasan las consultas, ya que no basta con SELECT: deberemos utilizar además MATCH(campo) AGAINST(cadena). En nuestro ejemplo:

    SELECT titulo,texto FROM articulos WHERE MATCH(texto) AGAINST ('$palabras')

    Traducido: seleccionar los campos "titulo" y "texto" de "artículos", filtrando donde haya coincidencias en el campo "texto" para la variable "$palabras".

    ¿No parece difícil, no?, pues aún hay más: MySQL nos puede devolver un número que indica el valor de coincidencia en cada registro (llamado habitualmente "SCORE" en muchos sitios). No es un valor en porcentaje, y puede varíar desde casi 0 (cero) hasta más de 4 según los cálculos realizados por MySQL). Es útil para ordenar los resultados por orden de coincidencia. Utilizarlo es un poco más complicado, pero no mucho: sólo tendremos que utilizar 2 veces MATCH... AGAINST. La consulta sería:

    SELECT titulo,texto, MATCH(texto) AGAINST('$palabras') AS coincidencia
    FROM articulos
    WHERE MATCH(texto) AGAINST ('$palabras')
    ORDER BY coincidencia DESC

    http://www.ultradev-es.com


    Visitas: 8337    Fecha: 2003-08-10

      Páginas Amigas

    Hosting
    Programas Gratis
    Trucos y Manuales
    Trucos Juegos
    Tutoriales
    VPS
    Trucos PC
    Manuales Gratis
    Certificados de Seguridad SSL
    Resellers
    Tucos Informática
    Blog Informatica
    Descarga Programas
    Manuales Gratis
    Listas
    Noticias Informatica
    Webmasters
    Manuales Online
    Foros Informática
    Foros para compartir
    Portatiles
    Software Gratis
    Foro de informatica
    Tutoriales de Flash y ActionScript
    Soft Download
    Muestras gratis
    Logratis.com
    Trucos Windows
    MaxiTrucos.com
    ManualesGratis.com
    Programar.net
    WebExperto
    SEO
    Aclantis
    Programatium
    Códigos y ejemplos
    Gamarod JavaScript
    Descargas
    ElGuruProgramador
    Aprender, cursos gratis
    Recursos Web
    ADR Formación, Cursos online
    Juegos para niños
    Ocio gratis
    Poner anuncio
    Trucos de Juegos
    Juegos


    © Evidalia Web SL, 2000-2011.
    Publicidad :: Diseño Web :: Contactar