Swish-e: GSA en casa

Shish-e (Simple Web Indexing System for Humans) es una pequeña herramienta OpenSource escrita en C que provee una Api en PERL para indexar nuestros documentos y después permitir cualquier búsqueda sobre ellos. Básicamente esta herramienta construye un árbol de índices sobre las palabras de nuestros documentos, y genera un par de ficheros con ellos. Para lograrlo debemos convertir los documentos a texto plano, de forma que el motor de indexación sea capaz de identificar las palabras y construir los índices sobre ellos. Esto en Linux es una tarea sencilla puesto que podemos ayudarnos de catdoc (para convertir .DOC a .TXT), pdf2text, unoconv (documentos OpenOffice a .TXT) y otros muchos, basta con realizar pequeñas búsquedas en Google y tener un poco de suerte. El motor permite dos modos de trabajo: Un modo araña en el que le pasamos una URL y él es capaz de escudriñar toda la Web siguiendo los enlaces, un modo local, donde nosotros nosotros indicamos un directorio y las extensiones de los documentos que queremos indexar, y un modo mixto, donde a swish-e le pasaremos el programa que usará para obtener las palabras de los documentos: así, swish-e sólo se encargará de construir los índices.
Luego, a través de una API en Perl podremos lanzar búsqueadas en nuestros ficheros. Para afinar nuestras búsquedas permite usar operadores lógicos que le dirán al motor de búsqueda cómo relacionar las distintas palabras de nuestra búsqueda:

  • and. Si buscamos [dolor and cabeza] le estaremos pidiendo al motor que nos busque documentos que contengan las palabras dolor y cabeza. Este es el comportamiento habitual y no hace falta escribir contínuamente el and: Si ponemos varias palabras [dolor cabeza], el resultado será el mismo que [dolor and cabeza].
  • or. Si buscamos [dolor or cabeza] le estaremos pidiendo al motor que nos busque documentos que contengan la palabra dolor o cabeza o ambas.
  • not. Si buscamos [not dolor] le estaremos pidiendo al motor que nos busque documentos que no contengan la palabra dolor.
  • near. Si buscamos [dolor near cabeza] le estaremos pidiendo al motor que busque documentos que contengan la palabra dolor y cerca de ella, aparezca la palabra cabeza. Esta es una opción similar a and pero permite acotar la proximidad de las palabras para afinar nuestra búsqueda. Podemos limitar la proximidad de estas palabras, añadiendo un número a near: Con [dolor near2 cabeza] le pedimos al motor que busque documentos que contengan la palabra dolor y cabeza separada hasta por dos palabras.

Para especificar varios operadores lógicos podemos usar paréntesis como si se tratase de una expresión matemática, evaluándose de dentro hacia fuera. Así [dolor and (not cabeza) ] buscará documentos que contengan la palabra dolor pero que no contengan la palabra cabeza.
Para afinar aún más nuestras búsquedas podemos usar comodines en las palabras de búsqueda.
  • ?. Usar el comodín ? le dice al motor que sustituya ese símbolo por cualquier letra. Si buscamos [cos?] el motor nos encontrará documentos que contengan palabras como cose, cost, cose, ..., en definitiva, palabras de cuatro letras que comiencen por cos.
  • *. Usar el comodín * le dice al motor que sustituya ese símbolo ninguna o más letras. Mientras el comodín ? se sustituye sólo por una letra, el comodín *, se sustituye por cualquier cantidad de letras. Si buscamos [libr*] el motor nos encontrará documentos que contengan palabras como libro, librero, librería, ..., en definitiva, palabras de cualquier longitud que empiecen por libr

No hay comentarios: