Manual de Uso JSBD_Indexador
Otros manuales disponibles:- Manual de uso de motor de base de datos JavascriptSQL
- Manual de uso de la librería JSBD_Conversor
- Descripción de la estructura de la JSBD
Índice
- Diseño Inicial
- Requisitos e instalación
- Ejemplo Básico de Uso
- Referencias de la clase JSBD_Conversor
I. Diseño Inicial
A continuación se muestra el diagrama de diseño inicial que describe la relación entre los distintos módulos utilizados para el funcionamiento de la base de datos en JavaScript.
El funcionamiento básico de la base de datos para JavaScript consiste en generar mediante un conversor de bases de datos y un indexador de documentos los archivos de definiciones, tablas, índices y demás componentes de la base de datos JSBD. Luego el motor JSSQL permite acceder de manera eficiente a la base de datos JSBD mediante consultas SQL.
Cada uno de estos componentes o subsistemas están conformados por una o más clases a ser usadas por los desarrolladores. El conversor y el indexador están desarrollados en PHP mientras que el motor JSSQL esta desarrollado íntegramente en JavaScript.
Una vez generada una base de datos JSBD, se pueden realizar consultas SQL mediante el motor JSSQL sin necesidad de acceder a ningún orto motor de bases de datos y sin necesidad de utilizar ningún lenguaje de scripting que funcione del lado del servidor (PHP, ASP, etc.).
A continuación se muestra el diagrama de clases que describe la relación entre las distintas clases PHP para la conversión de bases de datos e indexado de documentos.
JSBD_Indexador permite indexar un conjunto de archivos, generando un índice invertido de palabras.
Este índice consiste en un vector asociativo accesible desde JavaScript con un elemento por palabra, cada palabra se asocia con el listado de identificadores de documentos donde aparece dicha palabra.
Los documentos se indexan de a uno mediante llamadas al método Indexar($archivo,$id), luego una vez indexados todos los documentos se invoca el método Volcar(), generándose el índice general.
También al indexar un documento se genera un archivo .js con el contenido textual del mismo accesible mediante el motor JSSQL.
II. Requisitos e instalación
La clase fue desarrollada para ser utilizada mediante PHP versión 5 o superior.
En el caso del indexador de archivos PDF es necesario tener instalada la librería xPDF (http://www.foolabs.com/xpdf/) ya que se realiza una llamada de consola al programa pdftotext para la conversión de archivos.
III. Ejemplo Básico de Uso
A continuación se muestra un ejemplo de cómo utilizar la clase para generar el índice invertido de una serie de documentos.
<?php /* * Este es un ejemplo de uso del objeto indexador para utilizar con JSSQL */ include('../cls_JSBD_Indexador.php'); $ind= new JSBD_Indexador_PDF; //directorio de escritura de archivos .js $ind->_basedir='temp'; //largo maximo de las palabras a indexar (maximo 20 caracteres) $ind->_largo_max=20; //largo minimo de las palabras a indexar (deben tener 3 o mas caracteres) $ind->_largo_min=3; //Las palabras que esten en mas del 60% de los documentos no se indexarán // y seran agregadas al listado de StopWord $ind->_frec_max=0.6; //Nombre del archivo de log donde se imprimen resultados del proceso $ind->_log_arch="temp/log.txt"; //listado de palabras que no se indexaran $ind->_stop_words="ARTICULO,RESOLUCION"; //indexado de archivos if (!$ind->Indexar("temp/arch1.pdf", 121)){ print $ind->GetError(); exit; } if (!$ind->Indexar("temp/arch2.pdf", 122)){ print $ind->GetError(); exit; } if (!$ind->Indexar("temp/arch3.pdf", 123)){ print $ind->GetError(); exit; } // Se pueden indexar asi tantos documentos como se quiera //generación del índice invertido if ( !$ind->Volcar() ){ print $ind->GetError(); exit; } print "Generación del índice Exitosa"; ?>
IV. Referencias de la clase JSBD_Indexador
A continuación se describen los métodos y atributos de la clase JSBD_Indexador
IV.i _JSBDbasedir
Directorio donde se guardará los archivos de índice en archivos .js.
IV.ii _DOCSbasedir
Directorio inicial donde se encuentran los documentos a ser indexados.
IV.iii _log_arch
Ubicación del archivo de Log con la descripción del proceso de conversión, en caso de estar vacío no se guarda el Log del proceso.
IV.iv _stop_words
Listado de palabras frecuentes que no deben indexarse, separadas por comas.
IV.v _largo_min
Largo mínimo de las palabras a ser indexadas si es 0 se indexan todas las palabras. Ejemplo: 3 (no se indexa "la" pero si "las" y "laaaa").
IV.vi _largo_max
Largo máximo de las palabras a ser indexadas, si es cero no se tiene en cuenta el máximo. Ejemplo: 5 (no se indexa "holaquetal" pero si "holas" y "hola").
IV.vii _frec_max
Frecuencia máxima permitida al momento de indexar una palabra. Las palabras que sobrepasen esta frecuencia no serán agregadas al índice. Aquellas que no se agregan al índice se agregan a la lista de Stop Words. Ejemplo: 0.6 (si la palabra aparece en más del 60% de los documentos indexados no se agrega al índice).
IV.viii _case_sensitive
Establece si se distingue entre mayúsculas y minúsculas. Ejemplo: false ("algo" y "ALGO" y "ALGo" son la misma palabra).
IV.ix _acentos
Establece si se distinguen acentos. Ejemplo: false ("álgo" y "algo" y "älgo" son la misma palabra).
IV.x _numeros
Establece si se incluyen los números en las palabras. Ejemplo: false ("algo123" se toma como "algo" y "algo1alga" como "algo" y "alga").
IV.xi Indexar($archivo,$id)
Convierte el archivo $archivo en un archivo .js accesible por JSSQL y agrega las palabras del contenido en el índice invertido asociándolas al Id asignado.
Es un método abstracto que debe ser implementado por las clases que heredan de esta.
Parámetros:
$archivo: Ruta del archivo a indexar.
$id: Identificador asociado al archivo (generalmente se asocia a un número de registro de una tabla).
Devuelve:
TRUE en caso de poder indexarse el archivo, FALSE en caso contrario y se agrega una descripción del error en el archivo de Log.
IV.xii Volcar()
Vuelca el contenido del índice generado en los archivos .js correspondientes dentro del directorio indicepo por _JSBDbasedir. Este método se invoca una vez indexados todos los archivos necesarios.
Devuelve:
TRUE en caso de éxito, FALSE en caso contrario y se agrega una descripción del error en el archivo de Log.
IV.xiii GuardarConf($conf_arch)
Guarda la configuración del indexador en un archivo de texto.
Parámetros:
$conf_arch: Nombre del archivo donde se guardará la configuración.
Devuelve:
TRUE en caso de éxito, FALSE en caso contrario y se agrega una descripción del error en el archivo de Log.
IV.xiv CargarConf($conf_arch)
Carga la configuración del indexador desde un archivo de texto.
Parámetros:
$conf_arch: Nombre del archivo desde donde se cargará la configuración.
Devuelve:
TRUE en caso de éxito, FALSE en caso contrario y se agrega una descripción del error en el archivo de Log.
La sintaxis del archivo de configuración es la misma que la utilizada por el archivo php.ini de PHP.
Un ejemplo de archivo de configuración válido:
; JSSQL - ARCHIVO DE CONFIGURACION DEL INDEXADOR DE DOCUMENTOS ; GENERADO: 05-08-2010 03:08 ; ; CONFIGURACION GENERAL ; Directorio de almacenamiento de los archivos del indice (.js) basedir="temp" ; Establece si se distinguen entre mayusculas y minusculas (true/false) case_sensitive=false ; Establece si se distinguen acentos (true/false) acentos=false ; Establece si se distinguen numeros (true/false) numeros=false ; Largo máximo de las palabras a indexar largo_max=20 ; Largo mínimo de las palabras a indexar largo_min=3 ; Frecuencia máxima permitida para las palabras a indexar frec_max=0.6 ; Archivo de log log_arch="temp/log.txt" ; Listado de palabras que no serán indexadas (separadas por coma) stop_words="ABRIL"