Recherche avec Oracle Text

Il vous est possible d’utiliser toute la richesse syntaxique du moteur de recherche textuelle d’Oracle Text (option proposée lors de l’installation d’Oracle) dans certaines fonctions d’ACE.

Cet outil permet en effet d’indexer, de rechercher et d’analyser du texte et des documents contenus dans les tables d’une base de données Oracle. Grâce à sa puissance syntaxique (mot-clé, caractère de remplacement, opérateur logique, …), Oracle Text est capable d’effectuer une analyse sémantique de la chaîne de caractères saisie pour restituer les résultats les plus proches, avec un niveau très fin de détail.

Le moteur de recherche s’apparente fortement, d’un point de vue de la syntaxe, aux moteurs de recherche utilisés par Internet (Google, Yahoo …). Il dispose en outre de fonctionnalités pour la gestion d’un ensemble de documents multilingues.

Généralités

Accès

Cette fonctionnalité n’est accessible qu’en mode web au niveau de la recherche, dans les fonctions suivantes :

Le type de recherche Oracle Text ne se substitue pas à la recherche classique ou multicritères, mais la complète.

Mise en œuvre

Pour mettre en place cette fonctionnalité dans les fonctions web, consultez le « Guide de mise en oeuvre Oracle Text ».

La mise en œuvre d’Oracle Text ne nécessite aucune modification du fichier de configuration. En effet, le paramétrage s’active automatiquement dès qu’Oracle Text est installé, la procédure lancée et les statistiques chargées.

L’Administration d’Oracle Text est intégrée dans Oracle Enterprise Manager.

Stockage des informations

Le fonctionnement est basé sur des indexes spécifiques à Oracle Text. Chacun des mots constituant le champ de recherche est enregistré dans le format spécifié par le contexte d’index.

Les tables permettant de stocker les informations au format Oracle Text sont constituées du nom de la table de base, suffixée par « _REC » (pour « RECherche »).

Exemple : table « PRO_REC » pour les produits ou « TIE_REC » pour les tiers.

Les champs contenus dans ces tables sont systématiquement :

  • la clé primaire de la table qui doit être définie de la même façon que pour la table de base,
  • le champ «texte»qui permet de stocker toutes les informations sur lesquelles on souhaite faire la recherche.

Recherche « plain text » sur la table des produits : « PRO_REC »

  • codsoc : type integer,

  • codpro : type VARCHAR2(16),
  • texte : type VARCHAR2(2000).

Recherche « plain text » sur la table des tiers : « TIE_REC »

  • codsoc : type integer,
  • typtie : type VARCHAR2(3),
  • sigtie : type VARCHAR2(12),
  • texte : type VARCHAR2(4000),

Le stockage sur le champ texte ne doit pas dépasser 2000 caractères pour les produits. Mais selon votre contexte et votre activité, il reste possible d’augmenter cette limite dans la limite de 4000 caractères (limite fixée par Oracle).

Chacune de ces tables doit avoir sa propre clé primaire de la même manière que la table « standard». Par exemple, pour la table PRO, la clé primaire est définie par le couple de champs (codsoc, codpro).

Le champ « texte » est la concaténation des champs (séparés par des espaces) des différentes tables sur lesquelles on souhaite effectuer la recherche. L’alimentation de ce champ doit donc être réalisée dans la limite de sa définition en longueur (donc 2000 caractères en standard).

Alimentation des tables de recherche

Des procédures (voir documentation UPRC) en PL/SQL permettent d’alimenter les tables dédiées à ces recherches. Le PL/SQL a en effet l’avantage d’être très connu et facilement adaptable sur site.

Mais il reste possible d’alimenter les tables de recherche par d’autre moyens (Java, SQL*Loader …).

Fonctionnalités

Principes

Oracle Text peut être implémenté au niveau de la recherche de produits, de clients ou encore de fournisseurs. Comme les tables correspondantes peuvent être très volumineuses, il devient en effet intéressant d’effectuer des recherches aussi bien sur des informations de la table principale que sur des informations enregistrées dans les tables secondaires.

Ces recherches s’appliquent surtout pour des champs de type « Nom », « Libellé », « Description » ou encore « Commentaire ».

Pour exemple, Oracle text permet, avec la même requête, de chercher une information aussi bien parmi les libellés des produits que parmi le texte libre associé.

Syntaxe

Syntaxe Caractère Fonction
* Astérisque

Remplace une chaîne d’un ou plusieurs caractères.

- Tiret

Exclut le mot de la recherche

« » Guillemets

Recherchent exactement la chaîne de caractères saisie.

&

Et commercial

(ou un espace)

Applique l’opérateur logique «ET» entre deux opérandes.

| Pipe

Applique l’opérateur logique «OU» entre deux opérandes.

() Parenthèses

Regroupent les opérandes entre deux opérateurs logiques.

! Point d’exclamation

Effectue une recherche phonétique.

? Point d’interrogation

Effectue une recherche syntaxique.

Les éléments de ce tableau sont décrits ci-après par des exemples.

Accentuation, casse et séparateur

Il est possible de paramétrer Oracle text pour que la recherche soit indifférente à l’accentuation, à la casse (minuscules/majuscules), au séparateur de mots …

Exemple :

Une recherche parmi les fournisseurs avec les valeurs suivantes aboutira au même résultat :

  • VERDIERE
  • verdiere
  • Verdière

Caractère de remplacement

Le caractère « * » (astérisque) remplace une chaîne d’un ou plusieurs caractères.

Exemple :

  • Verdiè*

Le résultat de cette recherche parmi les fournisseurs fournira par exemple tous les fournisseurs dont le nom commence par le mot « Verdiè ».

Caractère d’exclusion

Le caractère « - » (tiret) permet d’exclure un mot de la recherche.

Exemple :

  • Deconninck - grossiste

Le résultat de cette recherche parmi les clients fournira par exemple tous les clients dont le nom est « Deconninck » mais qui ne sont pas grossistes.

Phrase exacte

Les guillemets (« ») permettent de rechercher la chaîne de caractères exacte.

Exemple :

  • « Grossiste en produits de nettoyage »

Le résultat de cette recherche parmi les clients fournira tous les clients dont un des libellés contient exactement « Grossiste en produits de nettoyage ».

Opérateurs logiques

Il est également possible d’exploiter une syntaxe plus évoluée, basée sur les opérateurs logique « Ou » et « Et ».

Le caractère « | » (pipe), situé sur votre clavier à droite du tiret, est utilisé pour appliquer l’opérateur logique «OU» entre les deux opérandes.

L’espace et le caractère « & » correspondent à l’opérateur logique «ET» et sont strictement similaires.

Les parenthèses permettent de regrouper les opérandes entre deux opérateurs.

Exemples :

  • Verdière | (caviste whisky)

    Le résultat de cette recherche parmi les clients fournira tous les clients « Verdière » ou les clients exerçant le métier de « caviste » et commercialisant du « whisky ».

  • (perc* percu*) | (décap* therm*)

    Le résultat de cette recherche parmi les produits fournira par exemple toutes les perceuses à percussion ou tous les décapeurs thermiques.

  • Verd* cav*

    Le résultat de cette recherche fournira tous les libellés contenant le début du mot « Verd » et contenant le début du mot « cav ».

  • Verdiè* | caviste

    Le résultat de cette recherche fournira tous les libellés contenant le début du mot « Verdiè » ou contenant le mot « caviste ».

Recherches avancées

En plus des recherches décrites ci-dessus, Oracle text vous permet de réaliser des recherches :

  • avec faute d’orthographe,
  • phonétique »,

Recherche syntaxique

Le point d’interrogation permet d’effectuer la recherche syntaxique (tolérance aux fautes d'orthographe et de syntaxe).

? recherche syntaxique ?dekapeur va retrouver des décapeurs.

Exemples :

  • « ?Dekonnynck »

Le résultat de cette recherche fournira aussi les clients qui portent le nom « Deconnynck ».

Recherche phonétique

La plus intéressante est évidemment la recherche phonétique, en particulier pour des recherches de tiers. En effet, ces mécanismes de recherche portent sur la consonance des mots. Ils sont en général utilisés dans de très grandes bases de données pour lesquelles la recherche approchée d’un nom peut être d’une très grande utilité.

Exemples :

  • « !Mauffais »

Le résultat de cette recherche fournira aussi les clients qui portent le nom « Mauffait ».