martes, 8 de noviembre de 2011

16.- Sistemas de recuperación masiva basados en técnicas de sindicación de contenidos

Las técnicas de lectura y recuperación de canales de sindicación hacen posible el desarrollo de una nueva generación de buscadores especializados, muy parecidos conceptualmente a los tradicionales motores de búsqueda como Google, Yahoo, Bing y muy distintos en cuanto a su alimentación contextual y corpus documental. La principal diferencia reside en la selección de las fuentes de información, su control, descripción y recuperación de contenidos de forma exhaustiva y precisa. Ello hace posible que una búsqueda en MedWorm, sea más productiva para el colectivo de médicos y especialistas clínicos que por ejemplo en Google...



La sindicación de contenidos es clave para la las ciencias de la Documentación no sólo por el interés que suscita el mero hecho de poder controlar y desarrollar técnicas que permitan la transmisión de catálogos bibliográficos, registros, datos, o información. Es mucho más importante ser conscientes de que la mayor parte de los sitios web y sistemas de publicación digital tienen un canal de sindicación paralelo. Esto significa que una gran cantidad de información se está generando día a día, de forma limpia, resumida o completa, constantemente y cuyas fuentes de información pueden ser y son en muchos casos de gran importancia y relevancia. Millones de canales de sindicación y formatos que aún quedan por descubrir y desarrollar aguardan a que algún investigador o documentalista sea capaz de reconocerlos, emplearlos y aprovecharlos para hacer lo que siempre ha caracterizado a nuestra profesión, recuperarlos, documentarlos, describirlos y ponerlos al servicio de todos nuestros usuarios y lectores.

Finalmente, hay que recordar que todo buscador de esta naturaleza, así como de cualquier otra, emplea constantemente las técnicas de sindicación, agrupación (clustering), algoritmos de recuperación, SQL e indexación de los contenidos en centenares de bases de datos y clusters de almacenamiento repartidos en miles de servidores por todo el mundo. De tal forma que hasta este punto y según todo lo explicado hasta el momento, sea asienta la primera piedra de los conocimientos necesarios para comprender mejor y en algún momento configurar y desarrollar un verdadero sistema de recuperación de información.

15.- Práctica6: Lectura y recuperación de canales de sindicación

El segundo elemento esencial para demostrar un proceso de sindicación de contenidos es la disposición de un lector de canales de sindicación, capaz de interpretar el lenguaje de cada formato RSS1.0, RSS2.0 y ATOM. Con la práctica6 se evidenciará irrefutablemente que MARC-XML no sólamente puede ser generado y compartido como cualquier canal de sindicación, sino que también puede ser capturado, recuperado y leído perfectamente con un programa parser similar al que se utiliza para todos los demás formatos de sindicación. De esta forma se demuestra que la técnica de sindicación de contenidos puede ser empleada también para otras actividades y finalidades como las bibliográficas, archivísticas, biblioteconómicas o documentales.

lunes, 7 de noviembre de 2011

14.- Práctica5: Generación de canales de sindicación

La generación de canales de sindicación es un proceso que lleva a cabo un programa adjunto a las principales herramientas de publicación digital (blogs, wikis, cms y otros sistemas). Su ejecución se activa en el momento en el que se publican nuevos contenidos. En ese momento se regenera un archivo con extensión XML que porta la información del canal y cuyo lenguaje de codificación suele ser un formato de sindicación RSS1.0, RSS2.0 o ATOM. Es ese archivo el que comúnmente se denomina canal de sindicación y que almacena los titulares, resúmenes y contenidos completos del artículo o elemento documental que se publica. En la práctica5 se abordará este asunto y se comprobará cómo trabajan este tipo de programas, generadores de canales de sindicación, comprobando que su funcionamiento es el mismo tanto para los casos de formatos de sindicación tradicionales como para cualquier otro formato como MARC-XML, demostrando empíricamente que al menos el primer elemento de la comunicación de la teoría de sindicación de contenidos, es decir, el emisor del canal es siempre el mismo para cualquier tipo de formato. 

13.- Demostrador de procesos de sindicación de contenidos: OrangeUP

La sindicación de contenidos es un proceso de comunicación y transmisión de datos ampliamente utilizado para efectuar el seguimiento de una serie de fuentes de información de forma sencilla y rápida. Dicho proceso es posible gracias a la disposición de una serie de programas capaces de generar los canales de sindicación en formato XML y a otros capaces de leer dichos canales en los formatos que se especifiquen. Dicho de otra forma, para que pueda darse una comunicación entre el emisor del canal de sindicación y el lector, ambos deberán compartir y entender el lenguaje en el que está codificado la información. En estos casos el lenguaje extensible de marcado XML ha dado lugar a terceros formatos RSS1.0, RSS2.0 y ATOM. Todos ellos son considerados por la comunidad científica como formatos de sindicación debido a que son legibles para la mayoría de los lectores de canales de sindicación, especialmente los que incorporan los navegadores web. Otra razón por la que se consideran formatos de sindicación es por su amplia difusión en el ámbito de los medios de comunicación y entre los usuarios que diariamente los utilizan. 

La pregunta que hay que hacer llegados a este punto es: ¿Podría crearse un canal de sindicación con información bibliográfica? ¿Podrían utilizarse otros formatos derivados de XML, que al igual que RSS1.0, RSS2.0 y ATOM, permitieran la transmisión de registros bibliográficos, archivísticos o documentales? ¿Rigen las mismas normas de transmisión de datos para todos los formatos? ¿Las mismas técnicas de sindicación de contenidos pueden emplearse para otros casos? ¿Es cierto que con un generador de canales y un programa lector se pueden utilizar las mismas técnicas que se están utilizando para la sindicación de contenidos, empleando formatos especializados?





Todas estas dudas y preguntas razonables, tienen su respuesta en el programa demostrador de procesos de sindicación de contenidos OrangeUP, desarrollado exprofeso, para explicar el funcionamiento de las técnicas de sindicación, sus formatos, aplicaciones y realidades desconocidas para la comunidad científica.

lunes, 31 de octubre de 2011

12.- Sindicación de contenidos y recuperación de información

La sindicación de contenidos, también denominada redifusión de contenidos se emplea habitualmente en el marco de la transmisión de noticias para su lectura mediante diversos sistemas de lectura. La gran cantidad de información que se genera en estos medios hace necesario su conocimiento, de cara a su explotación documental, organización, clasificación y posterior recuperación. En el documento que se muestra a continuación se explican algunas de las bases sobre las que se alambica esta técnica.


Descargar documento


Cronograma de la evolución de los formatos de sindicación

Esquema de funcionamiento de la sindicación de contenidos en el entorno web

Fisionomía de un canal de sindicación

martes, 25 de octubre de 2011

11.- Práctica4bis: Recuperación con Carrot2

Para los alumnos que no dispongan de ordenador personal o que no puedan probar el programa Carrot2 en su casa, se presenta la práctica4bis, que sí es posible llevar a cabo en los ordenadores de la facultad y de cualquier aula. Para poner a prueba los conceptos aprendidos, se propone la resolución de una práctica basada en la colección de prueba ODP239.

lunes, 24 de octubre de 2011

10.- Práctica4: Recuperación con Carrot2

Las técnicas de agrupación de contenidos pueden ser de gran utilidad para la recuperación masiva de documentos y su clasificación automática. Para poner a prueba los conceptos aprendidos, se propone la resolución de una práctica basada en un caso real "recuperación de empresas especializadas en ingeniería".

09.- Sistemas de clustering

Los sistemas de clustering son aquellos sistemas de recuperación que emplean algoritmos de agrupación de contenidos, por ello el proceso también puede adoptar otras denominaciones como categorización de los documentos de la colección. 
El concepto de clasificación de documentos refiere al problema de encontrar para cada documento la clase a la que pertenece, asumiendo que las clases están predefinidas y que se tienen documentos preclasificados para utilizar como ejemplos. En la presente tesis, se estudia la categorización o agrupamiento de documentos, entendiéndose por esto el proceso de encontrar grupos dentro de una colección de documentos basándose en las similitudes existentes entre ellos, sin un conocimiento a priori de sus características. (GOLDENBERG, D. 2007)
Algunos de los algoritmos empleados para efectuar los procesos de agrupación son: 
  • Categorización por objeto. El objetivo es encontrar agrupaciones entre todos los documentos que conforman la colección. Esto significa que un porcentaje de términos relevantes de un grupo de documentos deberá estar presente en todos y cada uno de ellos.
  • Representación vectorial. Cada documento de la colección se representa mediante vectores, quedando caracterizado por la frecuencia de aparición de los términos más relevantes y representativos. De esta forma se pueden comparar los vectores y agrupar los documentos en función de su similaridad.
    • Cálculo del Centroide. A partir de un grupo de documentos representados vectorialmente, se define el centroide que es el promedio de los vectores que componen el grupo. 
    • Reducción de términos a su raíz.
    • Eliminación de palabras vacías.
    • Eliminación de términos con bajo poder discriminatorio.
    • Eliminación de HAPAX.
  • Similaridad documental. Consiste en medir la distancia entre los vectores de cada documento para los que existen los algoritmos de:
    • Coeficiente del coseno. Cálculo del ángulo alfa. La semejanza entre los documentos se calcula como el producto vectorial entre ellos.
    • Otros: Jaccard, Distancia Euclideana, Coeficiente de Dice, Sorensen, Hamming, Tversky.
  • Métodos Jerárquicos. Emplean algoritmos que permiten caracterizar los documentos de la colección con una estructura arbórea denominada dendograma, quedando definidos los grupos con cada vértice del árbol representado. A partir de la raíz del árbol (conformada por un único grupo que contiene todos los documentos), la división por grupos se produce cuando se analiza en el documentoA qué otro documento tiene mayor presencia sus términos.
  • Métodos Particionales. En vez de trabajar a varios niveles para crear una estructura arbórea como en el caso anterior, se trabaja a un sólo nivel. Esto implica que el patrón de agrupación viene dado de antemano. Este factor establece las divisiones o partes con las que se calcula la similitud de los documentos.
  • Mapas auto-organizados. También denominado sistema de redes neuronales.
Bibliografía

Un ejemplo de Clustering: Carrot2
Carrot2 es un sistema de recuperación basado en técnicas de agrupación de documentos y contenidos web, sin requerir de bases de conocimiento externas como taxonomías o contenido preclasificado. Uno de sus algoritmos de agrupación es el correspondiente al método jerárquico, con los que es capaz de agrupar los contenidos de los motores de búsqueda Google o Bing. No obstante también puede emplearse para la recuperación de documentación dentro de un equipo cliente, siempre que disponga de una instalación previa "Google Desktop".

Para trabajar con Carrot2, se puede cargar su versión online desde el navegador web en la siguiente dirección: http://search.carrot2.org/stable/search. No obstante a efectos de probar todas sus posibilidades se recomienda la descarga de su versión carrot2-workbench-win32. Una vez descargado, descomprimir y ejecutar el archivo carrot2-workbench.exe.
  • Opciones de búsqueda.
    • Fuente. Se puede especificar qué base de conocimiento se desea utilizar para efectuar la búsqueda.
    • Algoritmo. Se permite la elección del algoritmo de agrupación de Carrot2. Por defecto se emplea Lingo, pero puede utilizarse K-mean, STC ó emplear los métodos habituales de agrupación por URL y fuente.
  • Páginas de resultados.
    • Clusters. Muestra un listado de todos los grupos identificados.
    • Documentos. Presenta un listado con los resultados más pertinentes de cada grupo.
  • Visualización.
    • Esquema relacional Aduna. (Aduna cluster map visualization). Muestra las relaciones entre unos grupos y otros.
    • Diagrama circular de grupos. (Circles visualization). Muestra una visión de los principales temas agrupados.
    • Mapa de superficie por grupos. (FoamTree visualization). Muestra un mapa de áreas con los grupos más pertinentes con colores cálidos en el margen superior de la imagen y los grupos menos relevantes en el margen inferior destacados con colores fríos. En la base del dibujo aparece el grupo desconectado "Other Topics".
  • Edición y configuración de atributos de consulta.
    • Grupos - Clusters
      • Cluster count base: Número que establece el factor base para la creación de grupos. Cuanto mayor sea el número mayor será el número de grupos que generará. No existe equiparación entre este número y el número de grupos, significa que a partir del factor base se creará un número proporcional de grupos.
      • Size-score sorting ratio: Establece el equilibrio entre la puntuación de los grupos y el tamaño según cantidad de documentos. Si toma valor 0 el algoritmo ordenará según tamaño. Si toma el valor 1 los resultados se ordenarán en función de un ranking de puntuaciones. Un valor intermedio tendrá en cuenta ambos factores.
    • Filtrado de etiquetas. Efectúa un proceso de reducción de los términos, eliminación de palabras vacías, números, términos interrogativos, para efectuar posteriores procesos de indexación más eficaces.
    • Etiquetas
      • Cluster label assignment method
        • Método único. Asigna etiquetas únicas para cada vector en cada grupo o cluster. De esta forma evita duplicaciones de grupos. Por este motivo, al requerir contrastar todos los vectores de todos los documentos entre sí, puede resultar un método lento pero más exhaustivo.
        • Método simple. Asigna etiquetas en todos los vectores de cada grupo contrastándolos mediante similaridad documental, obteniendo grupos duplicados y no duplicados. En tal caso finalmente se eliminan aquellos grupos con etiquetas duplicadas, quedando un resultado más reducido. Se trata de un método rápido, pero menos exhaustivo. 
      • Cluster merging threshold. Es el porcentaje de coincidencia entre los documentos de dos cluster para que se fusionen en uno. Si se utilizan valores bajos, significa que los grupos tendrán un mayor nivel de coincidencia, con un corpus muy parecido. Cuando mayor es el valor, más riesgos de que el grupo sea más heterogeneo.
      • Phrase label boost. Es el peso o puntuación específica que se otorga a varios términos cuando aparecen junto con otro. De esta forma se establecen relaciones de palabras o frases que siempre se recuperan juntas. Cuanto mayor sea el valor, mayor será la capacidad discriminatoria de las frases.
      • Phrase length penalty start. Número de palabras máximo antes de ser infraponderada la frase o grupo de palabras. 
      • Phrase length penalty stop. Si la frase supera el número máximo de palabras será eliminada.
      • Title word boost. Determina el peso que otorga a las palabras clave que coincidan con la consulta en el campo título.
    • Modelo de matriz
      • Factorization method. Es el método de factorización de la matriz de documentos.
        • Partial singular. Factoriza en función del número máximo de vectores K.
        • Factorization ED. Tiene en cuenta todos los factores de configuración de etiquetas, filtrado y clusters.
      • Factorization quality. Es el número de iteraciones del proceso de factorización.
      • Maximum matrix size. Determina el número máximo de elementos de cada matriz de cada documento
      • Maximum word document frequency. Determina la frecuencia máxima de las palabras en cada documento. Si la frecuencia supera a la especificada, la palabra será eliminada. El valor por defecto es 0,90 que indica 90%.
      • Term weighting. Determina el método para calcular el peso de las palabras del documento. Logaritmo de TF-IDF, Función lineal de TF-IDF o sólamente Factor TF.
    • Grupos multilingües
      • Default clustering language. Idioma por defecto para efectuar el proceso de agrupación.
      • Language aggregation strategy. Define la estrategia de agregación idiomática. Se puede establecer que efectúe un tratamiento de cluster para todos los idiomas, por idioma mayoritario ó creando grupos para cada idioma.
    • Extracción de frases
      • Phrase Document Frequency threshold. Umbral de la frecuencia de aparición de frases en documentos. Las frases con una frecuencia de aparición menor a la indicada serán ignoradas.
      • Truncated label threshold. Umbral de truncamiento en etiquetas. Valores bajos determinan grupos más grandes, ya que el factor de truncamiento de términos es más alto.
    • Preprocesamiento
      • Exact phrase assignment. Determina que los contenidos disponibles en cada agrupación coincidan con la consulta efectuada de forma exacta.
      • Merge lexical resources. Combina todas las palabras de todos los idiomas para formar parte del mismo lexicón de recuperación.
      • Minimun cluster resources. Define el número mínimo de documentos por grupo.
      • Reload lexical resources. Recarga todo el lexicón en cada consulta.
      • Word Document Frequency threshold. Umbral de frecuencia de los términos del documento, determina que cualquier término con un número de ocurrencias menor al especificado sea ignorado.

08.- Práctica3: Asentando conocimientos de MySQL

Con la intención de asentar los conocimientos adquiridos en cuanto a consulta de datos y recuperación de informaión se propone el desarrollo del siguiente ejercicio. Se deberá descargar el archivo SQL con estructura y datos correspondientes a un servicio de información global, instalar correctamente desde el gestor de bases de datos PhpMyAdmin y finalmente responder a las preguntas y consultas que se plantean.

Instalación de AppServ.
Para llevar a cabo las prácticas fuera del horario de clase, se recomienda la instalación de una distribución de programas denominada AppServ (Sólo para S.O. Windows). Contiene los componentes necesarios, el servidor Apache HTTP, PHP, MySQL y el gestor de bases de datos PHPmyAdmin. Para instalar la distribución Appserv, hay que descargar el archivo appserv-win32-2.5.10.exe dado que es la última versión estable. Descargar AppServ

Una vez descargada, ejecutar el archivo appserv-win32-2.5.10.exe y aparecerá el instalador de la distribución con el mensaje típico de bienvenida.

El siguiente paso es la ubicación de la instalación de toda la distribución. Por defecto Appserv, crea su propia carpeta en C:\appserv\ se recomienda no tocar esta ruta, puesto que organiza perfectamente todos los repositorios de todos los componentes.

El siguiente paso es la selección de los componentes a instalar. Se recomienda la instalación de todos ellos.

El paso de Configuración del servidor es parecido al señalado anteriormente en este artículo. Por lo tanto incluir el nombre de servidor localhost, correo electrónico de prueba y mantener el puerto 80 de comunicación para Apache.

El siguiente paso, permite la configuración de la base de datos MySQL. Sólo hay que incluir una password de conexión al servicio MySQL que se utilizará siempre en casos posteriores. Dado que el contexto es de prueba y en servidor local, se recomienda introducir la password "root" que es la convenida en estos casos por defecto.

Seguidamente se continúa con la instalación de la distribución hasta su finalización con éxito.

Finalmente, aparece un mensaje de instalación completa e inicio de los servicios Apache y MySQL. Es recomendable iniciarlos a fin de llevar a cabo las pruebas pertinentes de correcto funcionamiento.



Llegados a este punto, todo el paquete fue instalado correctamente y ya se puede trabajar con el gestor de bases de datos PHPmyAdmin. Para acceder al programa introduzca la siguiente URL en la barra de direcciones de su navegador: http://localhost/phpmyadmin/ le aparecerá una ventana emergente solicitando el usuario y contraseña de MySQL, utilizar "root", "root" para acceder. Superado este paso accederá al panel de control de PHPmyAdmin, ya conocido y explicado a lo largo de las sesiones del curso.

    martes, 18 de octubre de 2011

    07.- Práctica2: Consultas FULLTEXT

    Conocida la sintaxis de consulta FULLTEXT, se propone la resolución de una práctica consistente en la experimentación con sentencias MATCH() AGAINST(). Se deberá descargar un archivo SQL con estructura y datos correspondientes a un servicio de información global, instalar correctamente desde el gestor de bases de datos PhpMyAdmin y finalmente responder a las preguntas y consultas que se plantean.

    lunes, 17 de octubre de 2011

    06.- Recuperación avanzada con SQL

    La base de datos MySQL dispone de una serie de funciones de recuperación de información para aquellos campos definidos como de tipo FULLTEXT. Esto significa que MySQL es capaz de indexar el texto completo de los campos que el administrador le especifique. Este proceso implica la creación de un fichero inverso, el cálculo de frecuencias o la eliminación de palabras vacías del texto. Todo ello se lleva a cabo de manera automática en el momento en que se almacena información en los campos definidos para este fin.

    Particularidades del método FULLTEXT
    Las opciones de búsqueda e indexación FULLTEXT, tienen múltiples características y aspectos que deben ser considerados. Por un lado efectúa un proceso automático de eliminación de palabras vacías y por otro lado consta de una serie de limitaciones que no aconsejan su uso para pequeñas colecciones de documentos.
    • Eliminación de palabras vacías
      http://dev.mysql.com/doc/refman/5.0/en/fulltext-stopwords.html
      Cuando se efectúan búsquedas FULLTEXT, el fichero inverso de los textos indexados es tratado para eliminar las palabras vacías de la recuperación. También los términos de la consulta son tratados. Por defecto MySQL incluye tales palabras vacías en inglés en el archivo ft_static.c, por lo que la inclusión de un nuevo listado de palabras vacías conlleva su edición o la modificación de la ruta de la variable de configuración de MySQL ft_stopword_file.
    • Limitaciones
      http://dev.mysql.com/doc/refman/5.0/en/fulltext-fine-tuning.html
      No todo son ventajas, ya que FULLTEXT también tiene limitaciones. En primer lugar la extensión de las palabras susceptibles de recuperación o consulta, tienen un límite de 3 caracteres, por lo tanto se deberán utilizar términos a partir de 4 o más caracteres. Esta propiedad puede ser editada desde la variable de configuración de MySQL ft_min_word_len. En segundo lugar las búsquedas en lenguaje natural se efectúan con un umbral de corte en torno al 50% de los términos indexados. Dicho de otro modo, elimina la mitad de los términos o palabras a partir del análisis de frecuencias aplicando la técnica de cortes de Luhn, eliminando los términos más comunes y HAPAX.
    Algoritmo de recuperación FULLTEXT en MySQL
    MySQL utiliza un algoritmo de recuperación muy parecido al de ponderación de los términos mediante TF-IDF, es decir, frecuencia de aparición de los términos y frecuencia inversa del documento. TF-IDF es una medida de tipo estadístico utilizada para determinar la importancia de una palabra dentro de un documento en una colección o corpus documental. La importancia o peso del término se incrementa proporcionalmente al número de veces que una palabra aparece en el documento, compensándose con la frecuencia de la palabra en el corpus. Por ejemplo si un término aparece recurrentemente en el documento y a lo largo de toda la colección se obtiene una puntuación más baja. De hecho para evitar ese tipo de casos, MySQL procede a la eliminación de palabras vacías previamente al proceso de indexado.

    Preparar la tabla en MySQL para FULLTEXT
    La preparación de la tabla que almacena los registros y contenidos es clave para un buen funcionamiento del método FULLTEXT. Cuando se crea una tabla, el código para reseñar los campos que serán indexados a texto completo es FULLTEXT(campo1, campo2, campo3,...), véase tabla1.

    CREATE TABLE comments (
    id        INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id),
    title     TEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
    user
         VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
    date      VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
    comments  LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
    responses LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
    indexer   LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
    FULLTEXT(indexer)
    ) CHARACTER SET utf8 COLLATE utf8_general_ci
     Tabla1. Código para crear una tabla de comentarios en el que existe un campo indexer que almacenará todos los datos del comentario para su indexación.

    Aunque es posible utilizar múltiples campos para la recuperación a texto completo, se considera más eficiente crear un solo campo de tipo FULLTEXT expresamente dedicado para la indexación de textos. Esto es lo que ocurre en el ejemplo anterior con el campo indexer, ya que almacenará el título de los comentarios, el nombre del usuario, los comentarios propiamente dichos y las respuestas a los mismos. También es muy recomendable tratar la información textual antes de que esta sea insertada en la tabla de la base de datos. Esto significa que siempre que sea posible se aconseja efectuar un proceso de eliminación de palabras vacías, sustitución de caracteres extraños por equivalentes en código HTML o ASCII, sustitución de caracteres acentuados por caracteres no acentuados, transliteración de caracteres, etc. Todo ello se puede conseguir utilizando junto con MySQL programas de tratamiento y depuración de textos, diseñados en muy diversos lenguajes de programación, por ejemplo PHP.

    Búsquedas a texto completo con lenguaje natural
    Las búsquedas de tipo FULLTEXT se llevan a cabo utilizando dos cláusulas especiales. La cláusula MATCH() que indica entre paréntesis los campos indexados mediante FULLTEXT y la cláusula AGAINST() que contiene los términos de la consulta. Por defecto este tipo de consultas siempre son mediante lenguaje natural, esto es confrontar las palabras o términos de la consulta con la colección registrada en FULLTEXT. Este proceso se lleva a cabo por similaridad documental. El modelo de construcción de este tipo de consultas es el expresado en la tabla2.

    SELECT * FROM catalogo WHERE MATCH(indexer) AGAINST('término/s de consulta')
     Tabla2. Consulta MATCH básica busca en lenguaje natural

    Cuando se emplea la fórmula WHERE MATCH() los resultados devueltos se clasifican automáticamente por orden de relevancia. La relevancia se calcula en base al número de palabras del registro, el número de palabras únicas de ese registro, el número total de palabras en la colección, y el número de registros que contengan cada palabra determinada, esto es el modelo clásico de representación de documentos en el espacio vectorial.

    Búsquedas booleanas a texto completo
    Cuando se especifica en la cláusula AGAINST el atributo IN BOOLEAN MODE, se está indicando que la consulta en lenguaje natural adquiere propiedades booleanas. Esto habilita por ejemplo la posibilidad de decidir qué términos deben aparecer, cuáles no, o determinar qué frases deberán buscarse literalmente. Véase la sintaxis de la consulta en la tabla3.
    SELECT * FROM catalogo WHERE MATCH(indexer) AGAINST('+t1 -t1 t3 >t4 <t5 (t6 t7 t8) ~t9 t10* "t11 t12 t13"' IN BOOLEAN MODE)
     Tabla3. Consulta FULLTEXT en modo booleano

    El método IN BOOLEAN MODE, admite el empleo de modificadores para indicar operaciones muy precisas con los términos de consulta, a continuación se reseñan los más importantes:
    • ( +término ) el signo más precediendo al término es el equivalente del operador AND e indica que obligatoriamente dicho término debe constar entre los resultados.
    • ( -término ) el signo menos precediendo al término equivale al operador NOT e indica que el término no deberá figurar entre los resultados.
    • ( término1 termino2 ) si los términos no tienen ningún modificador o signo por defecto se emplea el operador OR, por lo que uno u otro término podrán figurar en los resultados.
    • ( >término4 ) un signo mayor que precediendo al término, le otorga un mayor peso en el cálculo de la relevancia, influyendo en un mayor número de resultados que contengan dicho término.
    • ( <término5 ) un signo menor que precediendo al término, le corresponde un menor peso en el cálculo de la relevancia, haciendo que los resultados tengan con menor frecuencia dicho término incluido.
    • ( (término1 término2 término3) ) Cuando los términos están encerrados entre paréntesis, se indica a MySQL que deberán encontrarse lo más próximos posibles. Esto significa que los primeros resultados a mostar serán aquellos que cumplan dicha condición.
    • ( ~término ) una tilde apaisada precediendo al término indica a MySQL que dicho término provoca ruido en la consulta, lo que le llevará a infraponderarlo para mejorar los resultados.
    • ( término* ) un asterisco ulterior al término se emplea a modo de truncamiento y concordará con aquellas palabras que empiecen por el término referido. Su empleo es de gran utilidad cuando se efectúan búsquedas a partir de las raices de un término/s.
    • ( "término1 término2 término3" ) Cuando varios términos estan agrupados en un entrecomillado doble implica una búsqueda por frase exacta. Es muy importante reseñar el aspecto de la comilla doble en este caso en contraposición con la comilla simple que envuelve toda la consulta dentro de la cláusula AGAINST('consulta "subconsulta" ').

    Búsquedas a texto completo con expansión de consulta
    http://dev.mysql.com/doc/refman/5.0/en/fulltext-query-expansion.html
    Las consultas basadas en FULLTEXT también soportan el método expansión de consulta, para recuperar la información. Esto es el empleo del algoritmo de retroalimentación automática por relevancia. Este funciona ejecutando dos consultas, por un lado la búsqueda con los términos de la consulta original y una segunda búsqueda en la concatena los términos de los documentos más representativos encontrados en la primera consulta. Para efectuar este tipo de consultas se añade el atributo WITH QUERY EXPANSION en la cláusula AGAINST(), véase tabla4.

    SELECT * FROM catalogo WHERE MATCH(indexer) AGAINST('término/s de consulta' WITH QUERY EXPANSION)
     Tabla4. Consulta FULLTEXT con expansión de consulta

    Búsquedas FULLTEXT con ranking de tipo SCORE
    Para ordenar los resultados de las consultas en función del valor de relevancia obtenido en los procesos de recuperación, se necesita incorporar un campo temporal que almacene dicho valor. Esto se conoce como ranking de tipo score. Obsérvese la sintáxis de la consulta de la tabla5, se seleccionan los campos id, title, content y MATCH(campos) AGAINST('consulta') AS score. Esto significa que el coeficiente del ranking de la consulta expresada se almacenará en un campo que se ha resuelto llamar score (podría llamarse de cualquier otra forma, pero esta es la forma más común de denominarlo). A continuación el resto de la consulta es similar a las anteriormente expresadas, con la salvedad de que el ordenamiento puede realizarse por orden decreciente de relevancia e importancia desde el campo temporal score.

    SELECT id, title, content, MATCH(indexer) AGAINST('término/s de consulta') AS score FROM catalogo WHERE MATCH(indexer) AGAINST('término/s de consulta') ORDER BY score DESC
     Tabla5. Consulta utilizando ordenación por ranking

    martes, 11 de octubre de 2011

    05.- Práctica1: Experimentando con SQL

    Aprendida la teoría esencial para efectuar consultas de datos y contenidos en MySQL, se propone la resolución de una práctica en la que se pondrán en práctica todos los conocimientos aprendidos. Se deberá descargar un archivo SQL con estructura y datos correspondientes a un catálogo bibliográfico, instalar correctamente desde el gestor de bases de datos PhpMyAdmin, incluir un campo de identificación autonumérico para la identificación de los registros y finalmente responder a las preguntas y consultas que se plantean.

    lunes, 10 de octubre de 2011

    04bis - Cláusulas SQL para ordenar resultados y mostrar valores únicos: ORDER BY y SELECT DISTINCT


    Cláusula ORDER BY
    La cláusula ORDER BY se utiliza para ordenar el resultado de la consulta conforme a una o más columnas o campos. La cláusula ORDER BY permite ordenar mediante orden ascendente, descendente y orden natural. 


    SELECT nombre-de-campo1, nombre-de-campo2 FROM nombre-de-tabla ORDER BY nombre-de-campo3 ASC, nombre-de-campo4 DESC


    SELECT titulo, autor FROM catalogo ORDER BY fecha ASC, titulo DESC

    Tabla 1. Resultados según orden ascendente del campo3 y descendente del campo4


    SELECT * FROM nombre-de-tabla ORDER BY nombre-de-campo1 + 0 DESC


    SELECT * FROM catalogo ORDER BY titulo +0 DESC


    Tabla 2. Resultados según orden natural descendente por el campo1


    SELECT * FROM nombre-de-tabla ORDER BY nombre-de-campo1 +0 ASC, nombre-de-campo2 +0 DESC


    SELECT * FROM catalogo ORDER BY titulo +0 ASC, fecha +0 DESC

    Tabla 3. Resultados según orden natural ascendente del campo1 y orden natural descendente del campo2


    Cláusula SELECT DISTINCT
    La cláusula SELECT DISTINCT permite seleccionar resultados de la consulta cuyos datos no sean duplicados en las columnas que se indican. 


    SELECT DISTINCT nombre-de-campo1 FROM nombre-de-tabla


    SELECT DISTINCT autor FROM catalogo

     Tabla 4. Seleccionar registros de la tabla cuyos valores en el campo1 sean diferentes o distintos


    SELECT DISTINCT nombre-de-campo1, nombre-de-campo2, nombre-de-campo3 FROM nombre-de-tabla WHERE condición-de-consulta


    SELECT DISTINCT materia, autor, titulo FROM catalogo WHERE fecha LIKE '%2010%'

    Tabla 5. Seleccionar registros de la tabla que cumpla las condiciones de consulta establecidas y cuyos valores en los campos 1, 2 y 3 sean diferentes o distintos


    04.- Operaciones de consulta SQL esenciales

    Hasta el momento se han advertido los mecanismos más sencillos de interactuación en lenguaje SQL. En este apartado se comenzará a explorar las posibilidades de consulta esenciales de SQL, concretamente el uso del operador LIKE, REGEXP (de comparación de cadenas) y los operadores AND, OR, XOR y NOT ( booleanos ).

    Consulta con operador LIKE
    El operador LIKE al igual que REGEXP, son operadores cuya misión es la comparación de cadenas o patrones dados en la consulta. La principal diferencia es que LIKE efectúa un reconocimiento de la cadena de consulta de forma absoluta a no ser que se especifiquen los caracteres precedentes y antecedentes con:
    • ( % ) Establece coincidencia con cualquier extensión y tipo de caracter delante o detrás de la cadena de consulta, según se ubique el porcentaje.
    • ( _ ) Establece coincidencia con 1 caracter de cualquier tipo delante o detrás de la cadena de consulta, según se ubique el guión bajo.

    SELECT * FROM catalogo WHERE titulo LIKE '%cupe%'
     Tabla1. Buscar cualquier registro de la tabla catálogo cuyo título contenga la cadena cupe. Esta consulta obtendría como resultado registros con la palabra recuperación, irrecuperable, ocupe, desocupen, etc.
     
    SELECT * FROM catalogo WHERE isbn LIKE '978-84-____-___-5'
     Tabla2. Buscar cualquier registro de la tabla catálogo cuyo isbn contenga cualquier caracter entre 978-84- y -5. Por ejemplo se obtendría como resultado 978-84-1234-123-5.

    Consulta con operador AND ( && )
    Recupera registros siempre y cuando se cumplan todas las condiciones establecidas. Si alguna no se cumple, no se incluye como resultando, saltando a los siguientes registros de la tabla. Por ejemplo la consulta de la tabla3, establece que los registros deberán cumplir la condición de contener en su título, subtítulo, resumen, descripción y autor la palabra texto. Obsérvese la sintaxis empleada (SELECT + campos + FROM + tabla afectada + WHERE + condición1(campo + LIKE + 'texto de consulta') AND condición2(campo + LIKE + 'texto de consulta') AND condición3(campo + LIKE + 'texto de consulta' ))

    SELECT * FROM catalogo WHERE
       titulo LIKE '%texto%' AND    subtitulo LIKE '%texto%' AND
       resumen LIKE '%texto%' AND
       descripcion LIKE '%texto%' AND
       autor LIKE '%texto%'
       LIMIT 0,30
     Tabla3. Consulta utilizando el operador AND

    Consulta con operador OR ( || )
    Recupera registros siempre que al menos una de las condiciones establecidas se verifique. Por ejemplo, en la tabla4 se establece que los registros deberán cumplir que o bien el título coincida con el patrón, o bien sea el subtítulo, el resumen, descripción o autor. No devolverá ningún registro si no se cumple al menos una de las condiciones.

    SELECT * FROM catalogo WHERE
       titulo LIKE '%texto%' OR    subtitulo LIKE '%texto%' OR
       resumen LIKE '%texto%' OR
       descripcion LIKE '%texto%' OR
       autor LIKE '%texto%'
       LIMIT 0,30
     Tabla4. Consulta utilizando el operador OR

    Consulta con operador XOR
    Variante absoluta del operador OR, recupera registros que cumplan una condición u otra pero nunca recuperará registros en que ambas condiciones se cumplan a la vez. Por ejemplo la consulta de la tabla5 recuperará cualquier libro del catálogo cuya temática sea arquitectura o bibliotecas, pero nunca arquitectura de bibliotecas.

    SELECT * FROM catalogo WHERE
       tematica LIKE '%arquitectura%' XOR
       tematica LIKE '%bibliotecas%'
       LIMIT 0,30 
     Tabla5. Consulta utilizando el operador XOR

    Consulta con operador NOT ( ! )
    Se utiliza como operador de precedencia con los operadores de comparación de cadenas de tipo LIKE, permite establecer una negación en las consultas. Por ejemplo en la tabla6, se recuperará todos los registros del catálogo cuyo autor sea Cervantes y cuyos títulos no contengan la palabra Quijote. El resultado probable sería La Gitanilla, Rinconete y Cortadillo, El Licenciado Vidriera, etc, menos El Quijote.
    SELECT * FROM catalogo WHERE 
       autor LIKE '%cervantes%' AND
       title NOT LIKE '%quijote%'
       LIMIT 0,30
     Tabla6. Consulta utilizando el operador NOT

    Consulta con operador REGEXP
    REGEXP es un operador especializado en la comparación de cadenas de texto mediante expresiones regulares (REGular EXPressions). Las expresiones regulares se utilizan para afinar de forma mucho más precisa la consulta de datos o cadenas de texto. Estas se componen a base de caracteres especiales, los más comunes son:
    • ( . ) Cada punto corresponde a un caracter individual, puede ser un número, letra o cualquier otro caracter.
    • ( ^ ) Indica que el patrón comienza por la instrucción que siga a ^.
    • ( $ ) Indica que el patrón finaliza con la cadena o instrucción que preceda a $.
    • ( ... ) Tantos puntos se indiquen, tantos caracteres tendrá la cadena de texto objetivo.
    • ( ^[Az]{5} ) Indica que el patron a buscar comienza por cualquier letra, con una extensión de 5 caracteres.
    • ( ^.*[0-9]{2}$ ) Establece que la cadena comienza por cualquier caracter repetido n veces y que finaliza con un número de 2 cifras.
    Por ejemplo en la tabla7 se consultan todos los autores cuyo apellido comience por Bal. El resultado podrá ser muy diverso, Balzac, Balz, Balza, etc.
      SELECT * FROM catalogo WHERE
      autor REGEXP '^Bal'
      LIMIT 0,30 
       Tabla7. Consulta utilizando el operador REGEXP

      Algunas referencias de interés para el estudio de expresiones regulares y sus pruebas son las siguientes:

      03.- Principios de SQL y sintaxis básica

      Por lo tanto SQL es un lenguaje de consulta estándar diseñado para operar en bases de datos. Como se ha explicado actúa en MySQL, pero también puede operar en otras bases de datos como Oracle, DB2, SQL server, PostgreSQL, etc. Qué operaciones permite llevar a cabo:
      • Ejecutar consultas y recuperar datos
      • Efectuar procesos de recuperación de información
      • Insertar, actualizar y eliminar registros
      • Crear nuevas bases de datos, tablas y campos
      • Establecer permisos de administración para los usuarios
      • Crear distintas vistas de una base de datos

      Aprendiendo la sintaxis básica
      En este curso nos centraremos en los métodos de recuperación por medio de SQL. Pero para ello es necesario aprender una sintaxis básica con la que se explican los principios de consulta SQL. En la siguiente tabla1 se observan una serie de palabras reservadas o cláusulas (coloreadas en rojo) que corresponden al selector de campos (SELECT), al selector de tablas (FROM) y a la cláusula condicional (WHERE).

      SELECT campos FROM tabla WHERE condición
       Tabla1. Sintáxis de consulta básica

      Siempre que se desea obtener datos o resultados de una consulta SQL se requiere un selector de los campos que son objetivo de la búsqueda, seleccionar la tabla en la que se desea buscar la información y establecer las condiciones oportunas que deben cumplir los resultados. Véase el siguiente ejemplo de la tabla2:

      SELECT isbn FROM catalogo WHERE autor LIKE '%bryson%'
       Tabla2. Ejemplo de consulta de todos los isbn del catálogo de libros cuyo autor sea bryson

      Este ejemplo se puede traducir de la siguiente forma: Selecciona el campo isbn de todos los registros de la tabla catálogo que cumplan la condición de que dentro del campo autor se contenga el término bryson. Obsérvese que el término de consulta esta rodeado de porcentajes. Esos caracteres también denominados truncamientos actúan sobre la consulta para indicar que la cadena bryson puede tener cadenas de texto que le precedan y que le sigan, como por ejemplo bill bryson natural de.

      Crear una base de datos
      Para crear una base de datos solo es necesario recordar la fórmula (CREATE DATABASE + nombre de la base de datos), véase tabla3. El nombre de la base de datos es recomendable que se escriba siempre en minúsculas, sin caracteres extraños, símbolos o acentos. Tampoco debería preceder al nombre ningún número. Por otro lado los espacios en el nombre deben ser sustituidos por guiones bajos (_) o guiones medios (-). Finalmente es recomendable el uso de nombres sencillos que puedan ser fácilmente recordados.

      CREATE DATABASE biblioteca
       Tabla3. Crear una base de datos denominada "biblioteca"

      Crear una tabla con campos
      La creación de una tabla en mysql implica también el diseño de su estructura de campos y con ello definir sus características. Resulta vital la forma en que se diseñan las tablas para así poder efectuar una mejor recuperación y utilizar funciones específicamente diseñadas para tal propósito, es el caso de las consultas de tipo FULLTEXT. Cuando se diseña la tabla, se deben establecer el tipo de campos que la componen en función al tipo de información que albergarán y a su extensión, por otro lado su set de codificación o set de caracteres que se utilizará, véase tabla4.

      CREATE TABLE users (
      id          INT NOT NULL AUTO_INCREMENT, PRIMARY KEY(id),
      name        VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
      surname     VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
      allvisits   LONGTEXT CHARACTER SET utf8 COLLATE utf8_general_ci,
      lastvisit   VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
      lastsession VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
      online      VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci,
      level       VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
      username    VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
      password    VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci,
      trash       VARCHAR(500) CHARACTER SET utf8 COLLATE utf8_general_ci,
      snumber     VARCHAR(2) CHARACTER SET utf8 COLLATE utf8_general_ci,
      email       VARCHAR(255) CHARACTER SET utf8 COLLATE utf8_general_ci
      ) CHARACTER SET utf8 COLLATE utf8_general_ci
       Tabla4. Crear una tabla denominada "users"

      Insertar un nuevo registro en la tabla
      Crear un nuevo registro en la tabla anterior se lleva a cabo con la sentencia de la tabla5. Obsérvese la sintaxis (INSERT INTO + nombre de tabla afectada + SET + nombre del campo = 'datos', nombre del campo = 'datos', nombre del campo = 'datos'...) Esta forma de insertar datos permite al operador de MySQL tener un mayor control sobre la información que inserta en el registro, pues no esta obligado a introducir todos los datos de todos los campos si no lo desea. Es posible introducir sólo la información de los campos que se reseñen.

      INSERT INTO users SET name='nombre', surname='apellidos', allvisits='registro de todas las visitas', lastvisits='última visita', lastsession='última sesión', online='estado', level='nivel de acceso', username='nombre de usuario', password='contraseña', trash='código de encriptación', snumber='código de seguridad', email='correo electrónico'
       Tabla5. Ejemplo de inserción de un registro completo en la tabla

      Modificar y actualizar un registro de la tabla
      Se utiliza la sintaxis (UPDATE + nombre de tabla afectada + SET + nombre del campo = 'nuevo dato', nombre del campo = 'nuevo dato', nombre del campo = 'nuevo dato' + WHERE + condición) Al igual que en el caso anterior de la inserción, no se está obligado a repetir todos los campos de la estructura que conforma la tabla de MySQL. Es suficiente reseñando sólo aquellos campos del registro en el que se van a suceder los cambios con nuevos datos. Finalmente se requiere la condición de la consulta de actualización, es decir, qué registro es el que se desea actualizar. En el caso de la tabla6, es sobre un registro en concreto, por lo que es necesario expresar que el identificador del usuario sea igual al que establezcamos.

      UPDATE users SET name = 'nuevo nombre', surname = 'nuevos apellidos' WHERE id = 'identificador del registro'
       Tabla6. Ejemplo de modificación y actualización de un registro de una tabla

      Eliminar un registro de la tabla
      Para eliminar un registro de una tabla se emplea la sintaxis (DELETE FROM + nombre de tabla afectada + WHERE + condición), véase tabla7. Al igual que en el caso de la modificación y actualización de una tabla es preciso determinar la condición bajo la que se eliminará los registros o registro concreto. Una vez más señalando el número de identificación es suficiente para indicar a MySQL cómo proceder.

      DELETE FROM items WHERE id = 'identificador del registro'
       Tabla7. Borrar un registro de una tabla

      martes, 4 de octubre de 2011

      02.- Recuperación de información en bases de datos

      ¿Qué es una base de conocimiento?
      Es cualquier colección o fondo documental que constituye el corpus de un sistema de recuperación de información. Habitualmente esta base de conocimiento se organiza y estructura en bases de datos para su mejor gestión, tratamiento y recuperación. Esto significa que base de conocimiento puede ser desde un compendio de datos, cifras y cadenas de texto inconexas, hasta documentos, referencias bibliográficas y compendios informativos y semánticos con plena significación.

      ¿Qué es una base de datos?
      La base de datos es el sistema que posibilita la organización y estructuración de los contenidos o bases de conocimiento en tablas y éstas a su vez en campos, de tal forma que cada campo represente una característica o rasgo descriptivo de la información o contenido registrado en la base de datos y cada tabla represente el dominio general que se está almacenando. Por ejemplo una tabla de usuarios contendrá campos lógicos que definan, describan e identifiquen a cada usuario. Por ejemplo el nombre, apellidos, dni, direccion, correo, website, telefono, cp, etc. Dentro de las distintas tablas de una base de datos es posible encontrar relaciones evidentes, ampliando la magnitud de la información. Es el caso de las bases de datos relacionales. Por ejemplo la tabla usuarios puede estar relacionada con la tabla prestamos en la que se relacionan los documentos y materiales librarios que se les presta. Esta operación en todo caso requiere de un campo clave de relación, que puede ser el identificador del usuario, sobre el que se registra los datos del préstamo y el identificador del libro que se le está prestando. Este mecanismo tan sencillo hace posible que distintas tablas queden vinculadas y puedan ser contrastadas y filtradas. Pero una base de datos comporta muchos más aspectos, el tipo de campos, sus características especiales para almacenar determinados contenidos, por ejemplo datos binarios, imágenes, textos de gran extensión, numeración en coma flotante, etc. Todos estos componentes hacen que cualquier base de conocimiento pueda ser recogida sea cual sea su naturaleza y características.

      ¿Qué es un gestor de bases de datos?
      El manejo de las bases de datos habitualmente se lleva a cabo mediante comandos bien definidos en terminales especializados, shell (Linux), cmd (Windows). Estos comandos en la mayoría de los casos responden al lenguaje de consulta normalizado SQL (Structured Query Language) con el que la base de datos entiende qué debe hacer. Mediante este lenguaje es posible dar ordenes al sistema para que inserte un registro, lo borre, lo edite y por supuesto recupere un determinado dato, información o documento. Dado que este método de comunicación requiere un tecleado continuo para interactuar con el sistema, se han desarrollado programas informáticos que llevan a cabo dicha función de manera automática, facilitando al administrador un interfaz gráfico para la edición, tratamiento y recuperación de la información. Estos programas que permiten trabajar con las bases de datos, las tablas, los campos y los datos almacenados en ellas se denominan gestores de bases de datos. Uno de los más conocidos y utilizados en todo el mundo es PhpMyAdmin. Diseñado para trabajar principalmente con bases de datos que emplean el lenguaje SQL.

      ¿Qué es MySQL?
      MySQL es la principal base de datos que alambica la web. Utiliza el lenguaje de consulta SQL y es utilizada conjuntamente con el lenguaje de programación PHP para crear las principales aplicaciones de la red. Normalmente actúa como un componente más que se instala en el paradigma de desarrollo web WAMP (SO. Windows, Servidor http Apache, BD MySQL, intérprete PHP), LAMP (SO. Linux, Servidor http Apache, BD MySQL, intérprete PHP) o MAMP (SO. Mac, Servidor http Apache, BD MySQL, intérprete PHP). Dicho de otra forma es la base de datos que sirve para almacenar la mayoría de los datos y transacciones comunicativas que se producen en internet. Es muy notable su utilización en Sitios Web, CMS (Content Management System) o gestores de contenidos, Sistemas de Gestión Integral de Bibliotecas, Archivos, Museos y un largo etcétera de herramientas y aplicaciones de software libre. Entre sus características más importantes destaca su capacidad para ejecutar múltiples consultas en distintos hilos de ejecución por segundo, gran capacidad de almacenamiento y motor de almacenamiento que efectúa un proceso de indexación automático de los contenidos y en todo caso de la base de conocimiento con que se alimente. Estas últimas características permiten hablar de recuperación de información y no de recuperación de datos, ya que efectúa por si solo los procesos de tratamiento previos a la recuperación de información. 
      • Eliminación de palabras vacías
      • Indexación de contenidos
      • Creación de fichero inverso
      • Análisis de frecuencias de cada término
      • Recuperación booleana
      • Recuperación a texto completo
      • Recuperación con lenguaje natural
      • Recuperación con expansión de consulta

        ¿Cómo funciona?
        Para trabajar con MySQL se necesita previamente instalarlo. Esta tarea se lleva a cabo con la instalación de un servidor http y sus componentes habituales, utilizando uno de los paradigmas de desarrollo web mencionados anteriormente. Por ejemplo mediante la instalación de una distribución WAMP ( AppServ ), LAMP ( Xampp ) o MAMP ( mamp ). Una vez instalado se requieren unos datos de conexión fundamentales para empezar a operar, estos son:
        • Nombre del servidor. Esto es la dirección IP o el nombre de dominio o la máquina en el que está instalado el servicio HTTP, la base de datos MySQL y el intérprete PHP. Por ejemplo si se trata de una instalación local que corresponde a nuestro equipo u ordenador, la dirección IP del servidor siempre será 127.0.0.1 y el nombre de servidor localhost, normalmente.
        • Nombre de la base de datos. Para que MySQL sepa con que base de datos se va a trabajar, es necesario indicar o seleccionar en todo caso su nombre. Se debe pensar que MySQL puede generar tantas bases de datos como requiera el usuario, lo que implica que en todo momento es necesario distinguir sobre cuál se desea operar.
        • Usuario y contraseña MySQL. Es el nombre del usuario y su contraseña de acceso a la base de datos MySQL. Éste puede ser un simple usuario con unos privilegios limitados o el administrador del sistema. En una instalación local de prueba, tanto el usuario como la contraseña siempre será root (Convenido por defecto).   
        Ejemplo de sintaxis de conexión en PHP
        <?php  
        $con = mysql_connect('localhost', 'root', 'root') or die ('error: no se pudo conectar a mysql');
        $database = 'openbiblio';
        ?>

        Especificados los datos de conexión e introducidos en el sistema MySQL, se hace posible su consulta y operación mediante sentencias SQL o bien empleado el interfaz gráfico de un gestor de bases de datos como el mencionado anteriormente.

          lunes, 3 de octubre de 2011

          00.- Introducción

          La continua proliferación y crecimiento de la información publicada en la red, hace necesario un conocimiento más profundo de las técnicas, herramientas y aplicaciones en recuperación de información. En este sentido los sistemas de gestión de contenidos también denominados CMS (Como Joomla o Drupal) han contribuido a facilitar la organización de la información y al mismo tiempo multiplicar el número de vías y medios de acceso a la misma. En este marco de trabajo también se circunscriben los sistemas de redifusión o sindicación de contenidos, así como las herramientas y modelos de recuperación.

          Se consideran aplicaciones documentales en su sentido más amplio, todas aquellas herramientas cognitivas de tipo clasificatorio, librario o informático que facilitan y ayudan al documentalista en su actividad profesional. En el contexto en el que se abordará la asignatura, en el de la recuperación de información, se consideran aplicaciones documentales a los sistemas de redifusión y recuperación de información bibliográfica sindicada (OrangeUp), sistemas de recuperación basados en técnicas de agrupación o clustering (Carrot2), la metodología de consulta en bases de datos SQL, sistemas de recuperación con expansión de consulta, los sistemas de indexación y análisis de contenidos a gran escala (OmniFind), así como a los motores de recuperación de alto rendimiento como (Apache Lucene).