ht://Dig
Introducción
Estructura de la Base de Datos
Sistema Utilizado
. Resumen de funcionamiento
Programas Requeridos
Instalación de ht://Dig
. Configuración de nuestro sistema
Ventajas
Desventajas
Recomendaciones
![]()
El escenario donde debíamos implementar este sistema de búsqueda es el de un nodo con una gran cantidad de páginas y con información que se modifica/agrega en forma frecuente. Adicionalmente a esto, el nodo ( http://www.colnodo.org.co ) aloja diferentes dominios en su configuración y, a diferencia de otros sistemas de búsqueda que se han implementado en este proyecto, era necesario que toda la información obtenida de los diferentes dominios fuera almacenada dentro de una misma base de datos y que por tanto se encontrara disponible en el momento de la búsqueda no importando cual fuera su ubicación.
El sistema debería ser lo suficientemente flexible como para permitir la 'adaptación' de su interface a Colnodo, esto implica la configuración personal de la interface de búsqueda, el cambio de textos de salida, logos y demás elementos que intervengan en el proceso de búsqueda pero que, fundamentalmente, ofreciera un resúmen breve de cada uno de los documentos que coincidían con las claves buscadas así como la fecha de modificación del documento y cuan relevantes resultaran las claves de búsqueda dentro del documento encontrado.
Estos requerimientos nos llevaron a seleccionar ht://Dig como herramienta integrada de indexación y consulta, de fácil instalación y administración y que cumple con nuestros requerimientos.
Estructura de la Base de Datos
La base de datos va a estar compuesta, casi exclusivamente, por documentos en formato HTML provenientes de las páginas de los usuarios que hacen uso del servicio de hosting de Colnodo. Estas páginas se encuentran alojadas en el servidor principal de Colnodo así como también en los Dominios Virtuales que se alojan en éste y algunos documentos del servidor de Bases de Datos que también se incluyeron en las bases y se encuentran disponibles en el sistema de búsqueda.
El sistema utilizado es ht://Dig versión 3.0.8b2. El paquete se obtiene comprimido con GNU zip. Puede encontrar la ultima versión de gzip, asi como una gran cantidad de herramientas GNU en ftp://prep.ai.mit.edu/pub/gnu/ La documentación actualizada de ht://Dig se puede obtener en http://htdig.sdsu.edu/
El sistema realiza esencialmente tres tareas necesarias para la creación de los índices y los mecanismos necesarios para la búsqueda en esos índices. Estas tareas, el sistema htdig las define como :
- Digging
- Antes de realizar una búsqueda es necesario que sea creada una base de datos que contenga los documentos a ser buscados. Estos se obtienen de las direcciones que se indican en la configuración de ht://Dig. En esta fase el programa actúa como un usuario de web excepto que sigue todos los 'links' que se indiquen en la página y se encuentren dentro del dominio indicado. El programa que realiza este proceso es htdig
- Merging
- Una vez que se ha creado la base documental, esta deberá ser convertida a un formato desde el cual pueda realizarse la búsqueda. Asimismo en esta etapa del proceso es posible agregar a la base de datos creada con anterioridad unicamente aquella información que haya sido cambiada o agregada. El programa que realiza este proceso es el htmerge
Búsqueda
El proceso final es el de búsqueda sobre la base ya creada. Este proceso se realiza a través de un programa CGI que es invocado desde un formulario HTML. El programa htsearch es el encargado de realizar las búsquedas y el que realiza una salida en formato HTML que será vista por los usuarios del servicio y que contendrá los documentos que coincidan con las claves de búsqueda.
El paquete ht://Dig fue desarrollado bajo Unix utilizando C++ y es necesario entonces un sistema Unix para su instalación y un compilador C y C++ (se utiliza el compilador C para la generación de algunas de las librerías que componen el paquete).
El sistema fue testeado satisfactoriamente en las siguientes plataformas:
Linux
Sun Solaris 2.5 SPARC (using gcc/g++ 2.7.2)
Sun SunOS 4.1.4 SPARC (using gcc/gcc 2.7.0)
HP/UX A.09.01 (using gcc/g++ 2.6.0)
IRIX 5.3 (SGI C++ compiler. Don't know the version)
libg++
Si se va a compilar el paquete con GNU C++ es necesario instalar las librerías libg++ (que se distribuyen en forma separada del compilador GNU C). Se pueden obtener estas librerías del repositorio de archivos GNU.
Gnu 'make'
Si se utiliza Berkeley 'make' habrá problemas en la compilación del paquete, este no reconoce la sintaxis de los 'include' de los Makefiles de ht://Dig. Es preferible que instale GNU 'make' (o modifique los Makefiles necesarios con la sintáxis correcta). Puede encontrar gnumake aquí e instalarlo antes de iniciar el proceso de compilación del paquete.
Servidor web apache
Así como en todas las otras opciones del proyecto hemos utilizado el servidor web desarrollado por Apache. Puede obtenerse la última versión en http://www.apache.org
Una vez que el paquete ha sido descomprimido y ubicado en un directorio se puede proceder a la configuración previa al proceso de compilación e instalación en su ubicación final.
Editar el archivo CONFIG (CONFIG.solaris en caso de instalarse para esa plataforma) y modificar los valores de las variables donde vayamos a ubicar los archivos luego de compilados y aquellos directorios donde se guardaran los datos indexados y los archivos de configuración.
El directorio que asumiremos como principal en la instalación, en nuestro caso, es /usr/local/htdig y teniendo esto en cuenta modificaremos las variables del archivo de configuración para reflejar estos cambios.
Luego de finalizar la modificación del archivo CONFIG se puede correr el programa
% ./configure
que tratará de determinar el tipo de sistema operativo instalado y setear correctamente las variables y los Makefiles necesarios. Luego de correr este programa ya podemos compilar el paquete con
% make
En caso de haber modificado alguno de los fuentes del programa es necesario ejecutar un 'make depend' antes de correr el 'make' final.
Si todo ha ido bien, ya podemos instalar los binarios y archivos de configuración con
% make install
Esto realiza varias acciones. Creara los directorios necesarios que se indicaron en el archivo CONFIG, instala los binarios resultado del proceso de compilación..
también copia el programa encargado de realizar las búsquedas (htsearch) en el directorio idicado en el archivo CONFIG (directorio CGIBIN_DIR).
Luego de este proceso varios archivos que se han instalado, pueden ser reconfigurados de acuerdo a nuestras necesidades. Algunos de los mas importantes
CONFIG_DIR/htdig.conf
Un archivo de configuración con los elementos mínimos para una configuración y creación de una base de datos.
SEARCH_FORM
COMMON_DIR/footer.html
COMMON_DIR/header.html
COMMON_DIR/nomatch.html
COMMON_DIR/syntax.html
Estas páginas se muestran como encabezado (footer.html), pie (header.html), mensaje de que no se ha encontrado ningún documento que contenga las claves indicadas (nomatch.html) y error de sintáxis en la indicación de claves de búsqueda que contengan operadores lógicos (syntax.html).
BIN_DIR/rundig
Configuración de nuestro sistema
Solamente resta ahora modificar el archivo de configuración ubicado en CONFIG_DIR/htdig.conf (en nuestro caso, de acuerdo a los datos indicados antes de la compilación en el archivo CONFIG este se halla ubicado en /usr/local/htdig/conf/htdig.conf).
Aquí algunos de los valores mas importantes a cambiar en este archivo. Los datos indicados son los necesarios para crear la base de datos de nuestro servidor principal Colnodo y el servidor de Bases de Datos de Colnodo
# Directorio principal donde se ubicaran las bases de # datos y los archivos necesarios para os procesos de # indexación y búsqueda. # database_dir: /usr/local/htdig/db
# El URL principal donde htdig comenzará los procesos # de obtención de páginas. Se puede indicar mas de un # URL separados por un espacio. # start_url: http://www.colnodo.org.co/ http://bases.colnodo.org.co/
# Si hay páginas que se desean excluir de los procesos # de indexado se pueden indicar en esta sección. Los # valores que se indican aquí son cadenas de caracteres, # si algún URL coincide con esta cadena no será indexado. # También pueden utilizarse las posibilidades ofrecidas # por los META-TAGS reconocidos por ht://Dig para exclusión # de páginas. exclude_urls: /cgi-bin/ .cgi
Una vez modificados estos valores ya es posible indexar nuestro sistema ejecutando /usr/local/htdig/bin/rundig (es script de ejemplo creará las bases de datos necesarias y las almacenará en /usr/local/htdig/db).
Ya es posible cargar la página CONFIG_DIR/htsearch.html ( http://bases.colnodo.org.co/busca.html ), realizar una búsqueda y ver el resultado.
| La instalación es sumamente simple y con unos cambios mínimos ya tenemos un sistema de búsqueda completo y con buena respuesta en cuanto a velocidad y presentación de los datos buscados. |
| Los procesos de actualización son automáticos y la instalación instala los scripts necesarios (incluso se proveen ejemplos de scripts que podemos incluir dentro del 'cron' de tareas del sistema). |
| El paquete se ofrece completo y no es necesario instalar programas adicionales para su funcionamiento (con la salvedad de que es posible que no todos hayan instalado las librerías necesarias para compilar programas en C++). |
| Es facil de configurar para todos los dominios que manejamos y los datos son incluidos en una sola base de datos de forma que la búsqueda se realiza en todas las direcciones sin necesidad cambiar el formulario de búsqueda o indicar en él una base de datos diferente. |
| Una importante ventaja de ht://Dig, para los webmaster de un sitio, es la posibilidad de enviar un correo electrónico en forma automática cuando sea necesario actualizar una página (htnotify). Por medio de META-TAGS es posible incluir en el diseño de la página una fecha de expiración, un casillero de correo electrónico y ht://Dig recordará 'automáticamente' pasada esta fecha, con un correo electrónico a la dirección indicada en el META-TAG, que es necesario actualizar la página. Cuando se manejan grandes volúmenes de información esto resulta particularmente útil a la hora de actualizaciones, modificaciones o cambios periódicos en las páginas que mantenemos. |
| No puede ser utilizado como 'spider' e incluir direcciones fuera de los dominios que manejamos localmente. La ausencia de controles en cuanto a cantidad de páginas, niveles de indexación y cantidad de dominios que se pueden 'atravesar', hacen que sea sumamente peligroso utilizarlo como una maquina de búsqueda de área amplia por la cantidad de páginas que podemos obtener sin control alguno y por consiguiente los grandes volúmenes de páginas y la cantidad de trafico serían incontrolables. |
| El espacio en disco que ocupan las bases de datos es bastante mayor comparado con los otros motores de búsqueda utilizados en este proyecto. El espacio necesario depende obviamente de la cantidad de documentos que queramos indexar pero para tener una idea aproximada podemos decir que multiplicando la cantidad de documentos que tenemos en nuestro servicio por 12.000 nos dará una idea aproximada en bytes de espacio necesario para albergar las bases de datos. |
Ej:
8.000 documentos
x 12.000
------------
96,000,000 (aproximadamente 98 Mb.)
| Asegurarse que la partición destinada a la ubicación de las bases de datos tenga espacio suficiente como para almacenar los datos luego de la indexación y para las actualizaciones de nuestros sitios de acuerdo a los volúmenes y frecuencias de actualización. Se pueden tomar como cálculos primarios los indicados mas arriba para prever la cantidad de disco necesaria. |
| Seguir paso a paso el proceso de configuración del sistema y modificar -luego- de este proceso los archivos necesarios como ser páginas, imágenes por defecto y los textos que forman parte de la salida por pantalla de los resultados de la búsqueda. |
| Mantener actualizada la versión de ht://Dig hasta que finalice su fase 'Beta' y revisar periódicamente la documentación ubicada en http://htdig.sdsu.edu/ por nuevas actualizaciones y patches a las versiones que estamos utilizando. |
![]()
No encontró la información que buscaba?, tiene comentarios?, contáctenos!