!
!
!
!
!
!
!
!

White paper/Intermedia (Text)

La Bibliothèque

Ceci est un projet personnel en cours !

Préambule

Depuis des années je suis mordu par l'information. Dans son sens large: la stocker, la retrouver. Ceci est dû peut être à une jeunesse passé dans un pays ou les machines à écrire étaient prohibées (voir un peu d'historique).  Quand j'ai connu Oracle, je ne m'imaginais pas qu'un jour il va m'aider à résoudre rapidement une partie de mon problème: gérer l'information d'une manière crédible et rapide.

Intégrer l'information

L'information circule. Ma bibliothèque contient des documents qui concernent Oracle. Divers et variés (les pages WEB, les documents locaux). Les pages WEB  peuvent être à leur place (sur le WEB) ou ramenées en local. Chaque type de document est indexé avec une technique particulière Oracle présente dans le package interMedia.

Ramener l'information

Les pages proposées sont pompées du WEB avec une routine écrite en perl attachée au serveur HTTP Apache (mod_perl). Elles peuvent m'être proposées ICI. La routine lit Perl ramène uniquement la page. Une procedure indépendante indexe les documents qui ne sont pas (encore) indexés, une autre reindexe toute la base. Vous pouvez voir le dernier document chargé dans la base qui n'a pas (encore) été indexé !

Indexer l'information

Il existe dans la nature (et sur le marché) divers moteur de recherche et indexation. Celui que j'utilise, basé intégralement sur le moteur d'Oracle, indexe notamment des documents Oracle. Vous pouvez démarrer l'indexation ici. Attention, ce lien démarre l'indexation qui risque d'être longue. 4000 documents sont indexés en moins d'une minute (oui, une minute !), si des chargements massifs ne sont pas en cours !. Vous pouvez également démarrer l'indexations des documents qui ne sont pas encore indexés (procedure qui dure sensiblement moins (longtemps, pour David))

Récupérer l'information

Aujourd'hui 15 Mars 2001, l'interface de saisie de mots de recherche n'est pas terrible (dans le fond, je suis passionné par Oracle, pas par la programmation HTML). Essayez de chercher parmi les documents un mot quelconque. Vous verrez la vitesse de réponse. Attention, les résultats ne sont pas encore exploitables.

Quelques détails techniques 
  • Serveur PC - Pentium III bi processeur, 768 Moctets RAM, Windows NT Server 4.0 SP5, 120 Giga Octets HD (IDE et SCSI)
  • Le serveur Web - Apache (NT)
  • Perl - ActiveState (NT)
  • Interface Perl/Apache - mod_perl
  • Oracle - 8.1.7.0 NT
  • Insertion des documents - 5000 documents présents sur le réseau local par heure (en moyenne)
  • Indexation des documents - 4500 en deux minutes

Performances

Les mesures des performances de la bibliothèque rentrent dans le cadre des mesures dites normales sur une base Oracle. Bien que décrites dans un certain ordre, je les formaliserai au fur et à mesure, dans un ordre incertain :-)

Le score de la recherche

Le score de la recherche est calculé ... 

Les erreurs

Bien suivre la table dr$index_error, pour éviter les situations de type:

  • SQL> select count(*) from dr$index_error;

    COUNT(*)
    ----------
    17695973

Cette table peut vite dégringoler, la fliquer régulièrement !

Les types de documents indexés
  • Aujourd'hui, j'indexe des documents dits de type texte (html, txt, xml, sql, etc) et des documents dits de type binaire (pdf, doc, xls)
Les types de stockage de documents employés
  1. J'emploie pour les indexes diverses méthodes. Chacune nécessite un type de soin Oracle différent ;-)
  2. * Le stockage des documents (de type texte) dans des colonnes de type CLOB. C'est de loin l'indexation la plus rapide, mais qui nécessite une volumétrie conséquente.
  3. * Le stockage des documents (de type binaire) dans des colonnes de type BLOB. Pour des raisons de performances, j'ai renoncé a ce type de stockage volumétrie conséquente.
  4. * Le stockage des documents sur Internet ;-). Ce n'est pas mon stockage ! Oracle indexe les adresses URL fournies dans une table.
  5. * Le stockage des documents sur le file system local. Attention, il ne s'agit pas des BFILES. Oracle indexe les documents en fonction de leur disposition 'géographique', le répertoire fourni. La table qui contient les documents à indexer s'appelle bib_datastore. L'index associé au texte indexé est datastores_text
Le chargement des documents de type texte
  • En ce qui concerne les CLOBS qui peuplent une des tables (BIBLIOTHEQUE), ils sont alimentés par une procedure PL/SQL stockée. Elle lit le fichier en binaire et remplit la bonne colonne ! Cette table contient () 300.000 documents, dans huit partitions de 1.5 GigaOctets la pièce ! Oracle indexe ces documents qui sont tous de type texte en  moins d'une heure, en parallèle ! (quatre process).
  •  
  •  
  •  
 
  •  
  • Le stockage des documents dans 

*

*


 

 


Copyright © 1998-2002 Radu Caulea, TAFORA MAJ 20/04/2006 !
Commentaires et suggestions radu[CHEZ]tafora.fr