Las búsquedas Full-text, las palabras cortas y los hostings compartidos (parte II)
Haces unos días, presentamos una idea para resolver el problema de hacer búsquedas Full-text con palabras cortas y el hecho de que éstas no aparecían en los resultados. Haciendo un poquito de memoria, el objetivo era alargar las palabras cortas con la ayuda de las funciones hash.
En esta segunda parte presentaré un ejemplo práctico en pseudocódigo, de fácil implementación en cualquier lenguaje.
El caso práctico
Tenemos una tabla con artículos de cualquier tipo tal que así:
+-------------------------------+ | articulo | +------+----------+-------------+ | id | titulo | contenido | +------+----------+-------------+
Pero muchos artículos se esconden detrás de las palabras cortas y acaban siendo inútiles, así que… ¡toca actualizarse!
Para esta implementación, vamos a añadir una nueva columna para guardar el título modificado:
+-------------------------------------------------------+ | articulo | +------+----------+-----------------------+-------------+ | id | titulo | titulo_modificado | contenido | +------+----------+-----------------------+-------------+
Como ya teníamos artículos en la tabla, esta nueva columna estará vacía, por lo que el primer paso será rellenarla. Para ello, implementamos la función alargadora que se encargará de transformar el título de nuestros artículos.
funcion modificar_titulo ( titulo ) { palabra = separar_palabras (titulo); para cada palabra hacer { si ( tamaño(palabra) <= 3 ) entonces { titulo_modificado += palabra + hash(palabra) + “ “; // no os olvideis de los espacios!! } si no { titulo_modificado += palabra + “ “; // no os olvideis de los espacios!! } } retornar titulo_modificado; }
Ahora, ya podemos rellenar la columna con este sencillo script:
funcion actualizar_tabla_articulo () { sql = “ select * from artiulo “; resultado = mysql_query( sql ); mientras ( resultado ) recorrer tabla { id = fila[ id ]; titulo = fila[ titulo ]; sql = “ update articulo set titulo_modificado = ‘ “ + modificar_titulo (titulo) + “ ‘ where id = “ + id; mysql_query( sql ); } }
Función creada y base de datos rellena … ¡ya lo tenemos todo!.
El funcionamiento es muy sencillo, cuando un usuario decide hacer una búsqueda:
“amantes del ron”
Antes de hacer la consulta a nuestra base de datos, tendremos que pasar la cadena por nuestra función modificar_titulo, para alargar las palabras cortas. Evidentemente, la búsqueda ahora se hará sobre la columna titulo_modificado y usaremos la columna titulo simplemente para mostrar el título original.
Algunos detalles
No hay que olvidarse de actualizar la columna titulo_modificado cada vez que insertemos un nuevo artículo. Una buena idea sería implementar esta función en nuestro gestor de contenidos para que se rellenará de forma automática y no tener que pasar el script actualizar_tabla_artículo continuamente.
<cuerdate de las stop words