Enviar por email

tu nombre: email destino: mensaje:
Nombre de Usuario: Email: Contraseña: Confirmar Contraseña:
Entra con
Confirmando registro ...

Edita tu perfil:

Usuario:
País: Población: Provincia:
Género: Cumpleaños:
Email: Web:
Como te describes:
Contraseña: Nueva contraseña: Repite contraseña:

martes, 12 de junio de 2018

Los sistemas de indexación y los software

Por Janet

Una de las primeras áreas de investigación en las que se aplicó la computación fue la búsqueda y recuperación de información, por lo que ésta es un área con un desarrollo histórico conocido. Por otro lado, el desarrollo de las redes de computadora llevó a la invención del protocolo de comunicación TCP/IP, que facilitó la interconexión de muchas redes. Luego, la invención del protocolo de transferencia de hipertexto (HTTP) y el lenguaje de marcado de documentos de hipertexto (HTML) facilitaron la creación de contenido por gran cantidad de personas. Esto permitió la popularización de Internet hasta llegar al día de hoy, donde la cantidad de información contenida en la red de redes es enorme y no para de crecer.

La solución al problema anterior es utilizar un buscador web. Los buscadores web necesitan rastrear con cierta frecuencia el contenido de los sitios web disponibles en Internet y luego, a partir de dicho contenido, construír un índice con el contenido de esos sitios que permita responder consultas de recuperación de información.

El proceso de construcción de este índice es llamado indexado, y de ahí el nombre de indexador al programa encargado de realizar esa función. Aunque pueden existir diferentes tipos de índices, en este trabajo nos referimos solamente a índices de texto, por lo que usaremos el término “indexador” para referirnos a indexadores de texto en todos los casos. En este trabajo se expone el estado del conocimiento de los sistemas de indexación de software libre disponibles en la actualidad.

Utilizaremos la terminología utilizada de forma tradicional. Llamamos documento a cada uno de los archivos con contenido de texto que nos interesa. Llamamos corpus al conjunto de los documentos que van a ser indexados.

Usualmente un término es una palabra, pero no siempre. Por ejemplo, un término puede ser una abreviatura, o unas siglas.

Utilizaremos la terminología utilizada de forma tradicional. Llamamos documento a cada uno de los archivos con contenido de texto que nos interesa. Llamamos corpus al conjunto de los documentos que van a ser indexados. Índice es el conjunto de datos que permite obtener los documentos que mejor responden a una consulta.

Se le llama término a cada uno de los elementos que serán tomados en cuenta para formar el índice, y ocurrencias, a la cantidad de veces que aparece un término en un documento. Usualmente un término es una palabra, pero no siempre. Por ejemplo, un término puede ser una abreviatura, o unas siglas.

Por otro lado, muchas palabras son variantes de una palabra raíz como en el caso de los verbos y sus conjugaciones en los idiomas romances. El punto de partida de todos los indexadores es construír un índice invertido, que es un conjunto de datos que incluye todos los términos de todos los documentos del corpus, así como los documentos donde éste término aparece. Puede almacenarse solamente su ocurrencia o no, o puede almacenarse la cantidad de ocurrencias. En cada caso se utiliza un modelo diferente.

se identificaron los siguientes programas de software libre para indexar documentos, aunque también incluímos algunos sistemas auxiliares que son necesarios para realizar esas funciones, aunque no realicen todas las funciones necesarias.

Los indexadores de software libre identificados son los siguientes:

Mifluz, es un indexador cuya tarea es encontrar y guardar las ocurrencias del término de búsqueda de tal forma que luego puedan ser buscados con facilidad, para esto posee un conjunto de librerías en C++ que manejan un índice de texto invertido.

Es muy simple, lo cual puede ser ventajoso o no, según lo que se necesite. Solamente es capaz de indexar texto plano y almacenar ocurrencias de los términos.

Al ser simple, es muy rápido y utiliza poca memoria.

Por otro lado, el formato en que almacena el índice no es eficiente, con lo cual desperdicia espacio. Sin embargo, en la actualidad el almacenamiento es relativamente barato, por lo que esta característica no es una desventaja demasiado grave.

Sphinx, este es un motor de búsqueda de texto completo con una gran velocidad y con un conjunto de herramientas que lo hacen muy versátil. Incluye una interfaz de programación para C++ (SphinxAPI) así como adaptadores para su utilización desde otros lenguajes de programación como Hava, Ruby, Perl, PHP, Python, C#, Haskell, etc.

Soporta dos modos de indexación: en disco, y en tiempo real. Permite utilizar diversas bases de datos para la persistencia de la información, tales como MySQL, PosgreSQL, MSSQL, etc. Permite realizar un procesamiento posterior de los resultados (post-procesamiento). Soporta diversos tipos de consultas. Soporta el estándar Unicode en la codificación UTF-8. Como desventaja, tenemos que es un sistema complejo, que necesita un proceso de instalación y configuración, que no son triviales.

Groonga, Groonga es un motor de búsqueda de texto completo basado en índice invertido. Resulta una solución a tener en cuenta en las aplicaciones en tiempo real por sus características como las actualizaciones sin bloqueos de lectura, muestra un documento nuevo registrado de forma instantánea en los resultados de búsqueda y su rapidez está a la altura de los mejores.

Programado en C, también puede utilizar diferentes bases de datos como soporte para el almacenamiento. Una ventaja muy particular de este motor es que permite la el acceso simultáneo de varios procesos para las consultas de lectura, gracias a su arquitectura libre de bloqueos. Ofrece un servidor especial que implementa su propio protocolo, llamado “Groonga Query Transfer Protocol” (GQTP) que reduce el tiempo de respuesta para consultas de lectura repetitivas. Al igual que la mayor parte de estos sistemas, es un sistema complejo, cuyo uso desde un programa en C o C++, no es trivial.