Version utilisée: Oracle SES 10.1.8.4
Oracle Secure Enterprise Search (SES) est un moteur de recherche multi-sources.
Ce topic concerne l’indexation d’un système d’information dont les documents sont stockés en tant que pièces attachées sur un système de fichiers et dont les méta-données, associées à ces documents, sont enregistrées dans une base de données
L’exemple qui suit concerne l’indexation d’un logiciel de wiki.
Echantillon d’un post relatif à une fiche produit :
On attache un document (CompProfFC900.pdf) à ce post
Le besoin exprimé est de permettre une recherche incluant à la fois les données stockées dans un SGBD (métadonnées du wiki) et le contenu des fichiers en attachement (sur le file system)
Il s’agit d’un cas de figure qui est couvert par l’usage du connecteur Database Source qui est disponible avec le produit Oracle SES.
Avec ce type de connecteur, on peut parcourir n’importe quelle source accessible via le protocole JDBC. La source peut être définie soit comme une vue (au sens sql du terme) soit par une requête SQL.
Chaque enregistrement est alors interprété comme un document.
La vue ou bien la requête SQL doit retourner au minimum les colonnes suivantes :
- URL
- CONTENT
- LASTMODIFIEDDATE
- KEY
- LANG
Les colonnes optionnelles sont :
- PATH
- ATTACHMENT_LINK
- ATTACHMENT
- CONTENTTYPE
- TITLE
Lorsque le corps du document est sous la forme d’un fichier stocké à l’extérieur de la base de données (sur un système de fichier par exemple), c’est la colonne ATTACHMENT_LINK qui doit contenir le lien au format http:, ftp: ou file:.
Même si le document est en attachement, la colonne CONTENT doit être présente, (pointant sur une valeur nulle, par exemple)
Mais c’est bien le document pointé par ATTACHMENT_LINK qui sera indexé.
Prenons l’exemple du logiciel de Wiki évoqué plus haut.
Le modèle de données est celui-ci :
- Table de nœuds : NODES
- Tables des métadonnées : VERSIONS
- Tables des attachements : ATTACHMENT
C’est la table ATTACHMENT qui contient les liens vers les fichiers en attachement.
Dans notre exemple, la localisation des fichiers en attachement sur le file system est :
E:\oracle\wls\user_projects\domains\services\owc\owc_wiki\attachments\owc_wiki\<Nom_du_post>\<nom_fichier>
Il est nécessaire de constituer, soit une vue, soit une requête au format SQL qui retournera, au minimum, les colonnes qui ont été mentionnées plus haut.
Voici un exemple de requête pour l’exemple du wiki :
SELECT
docserver?doc_id=' T1.vid AS URL,
T1.VID AS KEY,
'en' AS LANG,
SYSDATE AS LASTMODIFIEDDATE,
T1.CONTENT AS CONTENT,
'file://ten.mydomain.com/E:/oracle/wls/user_projects/domains/se
vices/owc/owc_wiki/attachments/owc_wiki/'
T2.pagename'/'T2.filename as ATTACHMENT_LINK
FROM
VERSIONS T1,
ATTACHMENT T2,
NODES T3
WHERE T1.nodeid = T3.nid and
T3.name = T2.pagename
Cette requête doit être fournie comme un des paramètres du connecteur qui sera destiné à l’indexation du référentiel de wiki :
Le panneau précédent correspond au paramétrage d’un nouveau connecteur de type Database Source. Tout Sgbd disposant d’un driver jdbc est utilisable avec ce connecteur.
Les considérations liés à la sécurité sont également définies de façon similaire, sous réserve de connaître le modèle de données de la source. En particulier, la requête principale doit comporter un attribut qui indique quel est le niveau de visibilité (colonne AUTH_ID dans ce cas particulier)
Le panneau précédent permet d’indiquer quel sera le filtre de sécurité. Ici, on fait référence à l’attribut AUTH_ID qui avait précisé auparavant, et on définit une requête qui positionne le niveau de visibilité en fonction de l’utilisateur connecté.
Lancement de l’Ordonnanceur d’indexation
A l’issue du lancement de la phase de crawling (programmée ou bien manuelle), Oracle SES fournit un rapport relatif à l’indexation :
Conclusion
Il est possible de faire prendre en compte au moteur de recherche Oracle SES un nouveau système d’information, et cela de façon déclarative.
Commentaires