Trucos Webmaster
           
Inicio Hosting Registro de Dominios Hosting Resellers VPS Certificados SSL
 
INICIO
MAS VISTOS
MAS IMPRIMIDOS
FOROS WEBMASTERS
» Editor WYSIWYG...
» Problemas con www...
» Mu Siveral |Season4 1.5X|Exp800|Drop80...
» Aprende todo sobre las webs...
» Now on sale Apple iPhone 4G 32GB ..........
» "¿Quieres Incrementar tus ganacias ...
» Darse de alta en Directorio Redcope...
» Directorio Redcope...
» orden de artículos de una Sección Joomla...
» Problemas con un reproductor...
nuevo post | más posts
WEBS DE INTERES:
Trucos
Programas Gratis
Manuales Gratis
Blog Informática
Trucos Juegos
Trucos PC
Listas
Trucos PC
Descarga Programas
Manuales Gratis
Tutoriales
Trucos Informática
Noticias Internet
Foros Informática
PHP Adictos
Manuales
Manuales Online
Trucos Juegos

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: 8164    Fecha: 2003-08-10
Te ha resultado interesante?
 
SI
NO
 
Categorias
Diseño Banners
Diseño Gráfico
Diseño Web
Dominios
Hosting
PHP-NUKE
Promoción Web
Programación
Posicionamiento web en Google? El tutorial que te proponemos te ayudará a conseguir un buen posicionamiento web ...
Consejos para un buen diseño web
A medida que crecemos en nuestra profesion nos damos cuenta de ciertas cosas que debemos tener en cuenta a la hora de diseñar o rediseñar un WebSite ...
Programación de páginas web - La importancia de código limpio La manera de construir una página web puede repercutir sobre la capacidad de un robot para leerla e indexar sus contenidos ...
Optimización de una página web
A medida que crecemos en nuestra profesion nos damos cuenta de ciertas cosas que debemos tener en cuenta a la hora de diseñar o rediseñar un WebSite ...
El banner y la publicidad en Internet Para comenzar os diremos que un BANNER es un pequeño soporte publicitario virtual que enlaza a unas páginas con otras ...
 
©2011 Evidalia Web SL