A L I M E N T A T I O N A G R I C U L T U R E E N V I R O N N E M E N T Réseau BD 11/12/08 Fonctionnalités et limites d’outils d’indexation et de recherche.

Slides:



Advertisements
Présentations similaires
Bases de Données Avancées: Bases de Données Relationnelles
Advertisements

Les Systèmes de Gestion de Bases de Données (SGBD) PL-SQL.
Les Systèmes de Gestion de Bases de Données (SGBD) Les vues.
Bases de Données XML Natives
Fonctionnalités des SGBD
Année universitaire Système dinformation Le SQL (Structured Query Language) langage dinterrogation dune base de données.
LE LANGAGE SQL : LDD La création de tables L’ordre CREATE CREATE TABLE nom_de_table (Nom_colonne Type_colonne, Nom_colonne Type_colonne,
1 ARCHITECTURE DACCÈS la méthode générale modèle de données définitions module daccès / modules métiers construction des modèles les modules daccès, les.
Licence GNU FDL - Version 1.5
Les contraintes d’integrité
LMD: Langage de Manipulation de Données
Développement d’applications web
Création d’un langage d’action pour un logiciel MDA
Contrôles d'accès aux données
L’utilisation des bases de données
PostGIS – Création d'une base spatiale
L’utilisation des bases de données
F Copyright © Oracle Corporation, Tous droits réservés. Créer des programmes avec Procedure Builder.
A L I M E N T A T I O N A G R I C U L T U R E E N V I R O N N E M E N T Réseau BD 11/12/08 Hibernate Search Réunion dunité – 23/10/2008 Erik Kimmel.
EPID-CPI-ISAIP Philippe Bancquart - mise à jour 24/02/ page 1 Procédures stockées CPI-SQLServer.
PostGIS: Index, Opérateurs et Fonctions
Projet Lucene 22 avril 2011 Acquisition de Connaissances 2
SQL: Contraintes et Triggers
1 CSI 2532 Lab3 6 Février 2012 Programmation avancée SQL.
Initiation aux bases de données et à la programmation événementielle
Recherche par mots-clés vs recherche en langue naturelle.
OPTIMISATION DE BASE DE DONNEES ORACLE
 CREATE TABLE  DROP TABLE  ALTER TABLE  INSERT  UPDATE  DELETE  SELECT interrogation 2 Instruction de mise à jour structure.
Comment stocke-t-on des données sur un site web ?
Cours n°4M2. ESCE (S. Sidhom) Séminaire ( 6-12 Février 2007 ) Promo. M2 ESCE-Tunis 2006/07 Conception d’un système d'information sur Internet Architecture.
JDBC L'API JDBC est utilisée pour utilisée pour intéragir avec une base de données.
Modification dynamique
(Procedural Language / Structured Query Language)
1 PHP 5 Notions fondamentales (cours #5) Formation continue – Cégep de Sainte-Foy.
Acquisition d’information sur internet
Module 7 : Utilisation de requêtes élaborées
DEFINITION DES DONNEES : schéma conceptuel. Schéma conceptuel instructiondescription CREATE TABLEcréation d'une relation ALTER TABLEmodification de la.
Module 4 : Implémentation de l'intégrité des données.
Module 13 : Implémentation de déclencheurs. Vue d'ensemble Présentation des déclencheurs Définition de déclencheurs Exemples de déclencheurs Performances.
Gérer les rôles.
Magellium - 24 rue Hermès – BP12113, Ramonville Saint-Agne 
Le Langage SQL Introduction. 2 Historique du Langage SQL E. F. CODD : premiers articles dans les années 70 IBM crée le langage SEQUEL (Structured English.
21/04/2015© Robert Godin. Tous droits réservés.1 6Gestion des contraintes d’intégrité en SQL n Contrainte d'intégrité statique – respectée pour chacun.
Cours SQL.
Quinio1 Bases de données : modèlisation et SGBD Séance 3 B Quinio.
Création et Gestion de Tables
 Le langage SQL Introduction SQL : Strutured Query Language, est un langage de requête, que l'on retrouve dans divers SGBDR (Access de Microsoft, MySQL,
3 Copyright © Oracle Corporation, Tous droits réservés. Créer des fonctions.
Cours n°4M1.ist-ie (S. Sidhom) UE 203 Promo. M1 IST-IE 2006/07 Conception d’un système d'information sur Internet Architecture trois-tiers : technologies.
4 Copyright © Oracle Corporation, Tous droits réservés. Gérer les sous-programmes.
Les vues Une vue: c’est une relation virtuelle. Définie par:
Cours Access TuanLoc NGUYEN. Contact Nguyen TuanLoc Tél: Web:
1 Structure en MC Principes Stockage des données dans la mémoire volatile d’un ordinateur Problèmes Stockage temporaire «Petits» volumes de données Langages.
Structured Query Language 1/34. SQL Types de données Langage de Définition de Données (LDD) Langage de Manipulation de Données (LDM) Langage de Contrôle.
Les bases de données Séance 8 Jointures.
Types de données composites
Le langage SQL.
Séance /10/2004 SGBD - Approches & Principes.
Initiation aux bases de données et à la programmation événementielle Cours N°2 : langage d’interrogation de données. (Les requêtes statistiques et autres).
Initiation aux bases de données et à la programmation événementielle
NIVEAU LOGIQUE Vues. Fenêtre dynamique sur la base Ses données proviennent d'autres tables ou d'autres vues.
Nicolas Ribot Introduction aux triggers Nicolas Ribot - Licence GNU FDL - Version 1.1.
INTRODUCTION AUX BASES DE DONNEES Base et métabase
Cours n°2 Implémentation et exploitation
Les vues, indexes, séquences.  Qu’est ce qu’une vue 1. Une vue est une vision partielle ou particulière des données d'une ou plusieurs tables de la base.
Le Langage de Manipulation de Données LMD Module 6.
SQL Partie 2. SQL est un langage de manipulation de données SQL est un langage de manipulation de données (LMD), cela signifie qu'il permet de sélectionner,
1 Les bases de données Séance 5 -- Le Langage de Définition de Données ou la manœuvre de la structure de la base -- Le Langage de Manœuvre de Données.
Transcription de la présentation:

A L I M E N T A T I O N A G R I C U L T U R E E N V I R O N N E M E N T Réseau BD 11/12/08 Fonctionnalités et limites d’outils d’indexation et de recherche "full text" Tsearch2 (PostgreSQL)

I.Luyten Réseau BD 11/12/082 C’est quoi Tsearch2 ?

I.Luyten Réseau BD 11/12/083 C’est quoi tsearch2 Un module de recherche plein texte Spécifique du SGBD PostgreSQL  en module contrib à partir V2/docs/tsearch-V2-intro.html  intégré au moteur en 8.3, avec une meilleure gestion, de nouveaux langages et de nouveaux dictionnaires Utilisé généralement sur des champs texte en langage naturel (ex: titres de films)

I.Luyten Pourquoi tsearch2 ? Les recherches de texte du type LIKE, ILIKE, ~ et ~* ne suffisent pas pour des recherches en langue naturelle. Avec les outils tsearch2, on peut transformer une phrase en un ensemble d’unités lexicales qui sont appelées lexèmes. En linguistique : morphème n.m., unité minimale de signification: Dans le mot " mangiez ", " -iez " est un morphème grammatical (= 2 e personne du pluriel), et " mang- " est un morphème lexical (= lexème). On peut les stocker, les indexer et faire des recherches à partir d’eux. Réseau BD 11/12/084

I.Luyten Description tsearch2 Tsearch2 propose plusieurs dictionnaires (anglais, espagnol, français,..) Un certain nombre de mots comme the, of, etc.. ne seront pas indexés. Une liste par défaut existe. Elle peut-être modifiée. On peut stocker et indexer les lexèmes de plusieurs champs dans un seul champ. A partir du lexème, on recherchera donc les enregistrements dont le champ A ou le champ B ou le champ C.. On peut utiliser les opérateurs booléens, pour faire une recherche sur les lexèmes. (and, or, not) Réseau BD 11/12/085

I.Luyten Réseau BD 11/12/086 Tsearch2 utilisé à l’URGI

I.Luyten Réseau BD 11/12/087 Tsearch2 à l’URGI Utilisé en 2006 Avec la version 7.4 de PostgreSQL Pour améliorer les performances (like ‘%nom%’ n’utilise pas d’index) Sur des données d’ontologies (GO) Avec un dictionnaire en anglais Abandonné car cela ne correspondait pas à nos besoins.

I.Luyten Exemple Table cvterm:  champ name (character)  champ definition (text) name:  phosphocreatine catabolism Definition:  The breakdown into simpler components of phosphocreatine, a phosphagen of creatine which is synthesized and broken down by creatine phosphokinase. Recherche dans champ définition Réseau BD 11/12/088

I.Luyten Exemple: que fait tsearch2 ? Definition:  The breakdown into simpler components of phosphocreatine, a phosphagen of creatine which is synthesized and broken down by creatine phosphokinase. Nouvelle colonne idxdefinition  'broken':16 'compon':5 'creatin':11,19 'simpler':4 'synthes':14 'breakdown':2 'phosphagen':9 'phosphokinas':20 'phosphocreatin':7 Réseau BD 11/12/089

I.Luyten Utilisation tsearch2 Installer un module (tables, fonctions et types) dans la base qui nous intéresse. Donner les permissions sur les nouvelles tables du superutilisateur. Modifier le schéma de la base de données: Ajouter de nouvelles colonnes dans les tables contenant les champs concernés. Remplir ces nouvelles colonnes a l’aide des fonctions tsearch2 Développer des requêtes pour interroger la base avec le langage tsearch2 (fonctions). Réseau BD 11/12/0810

I.Luyten Installation module Le superuser installe dans la database $PGHOME/share/contrib/tsearch2.sql Donne les permissions sur les tables tsearch2 à l’utilisateur propriétaire de la database  pg_ts_cfg  pg_ts_cfgmap  pg_ts_dict  pg_ts_parser Réseau BD 11/12/0811

I.Luyten Réseau BD 11/12/0812 Modifier le schema ALTER TABLE cvterm ADD COLUMN idxdefinition tsvector; UPDATE cvterm SET idxdefinition=to_tsvector('default',definition); VACUUM FULL ANALYZE; CREATE INDEX idxdefinition_idx ON cvterm USING gist(idxdefinition); VACUUM FULL ANALYZE; CREATE TRIGGER tsvectorupdatecvterm BEFORE UPDATE OR INSERT ON cvterm FOR EACH ROW EXECUTE PROCEDURE tsearch2(idxdefinition, definition);

I.Luyten Réseau BD 11/12/0813 Types, fonctions et opérateurs select * from cvterm where idxdefinition to_tsquery('default',‘kinase'); Select to_tsvector('Presentation of Postgres') as lexemes;  lexemes   'postgr':3 'present':1

I.Luyten Requêtes select count(*) from cvterm where idxdefinition to_tsquery('default',‘similarity');114  Filter: (idxdefinition '''similar'''::tsquery) select count(*) from cvterm where idxdefinition to_tsquery('default',‘similar');114  Filter: (idxdefinition '''similar'''::tsquery) select count(*) from cvterm where definition like '%similar%';114  Filter: (definition ~~ '%similar%'::text) select count(*) from cvterm where definition like ; '%similarity%'; 7  Filter: (definition ~~ '%similarity%'::text) Réseau BD 11/12/0814

I.Luyten Requêtes select count(*) from cvterm where idxdefinition 'kinas'::tsquery;161  Filter: (idxdefinition '''kinas'''::tsquery) select count(*) from cvterm where idxdefinition to_tsquery('default','kinase');161  Filter: (idxdefinition '''kinas'''::tsquery) select count(*) from cvterm where definition like '%kinase%';170  Filter: (definition ~~ '%kinase%'::text) select count(*) from cvterm where idxdefinition 'phosphokinas'::tsquery;3  Filter: (idxdefinition '''phosphokinas'''::tsquery) Réseau BD 11/12/0815

I.Luyten Performances select * from cvterm where definition like '%kinase%';  Time: ms170 rows sur select * from cvterm where idxdefinition 'kinas'::tsquery;  Time: ms161 rows sur Table testée en prod: featureprop, lignes dont indexées par tsearch2 (C. Pommier)  8006,802 ms => 415,942 ms Avec jointure featureprop join feature using (feature_id)  9840,845 ms => 435,731 ms Réseau BD 11/12/0816

I.Luyten Intérêt tsearch2 Augmentation des performances Insuffisance des expressions rationnelles car  elles ne peuvent pas gérer facilement les mots dérivés, par exemple satisfait et satisfaire.  La recherche sur satisfaire ne ramène pas satisfait Fournir un classement (score) des résultats de la recherche Etablir une correspondance entre différentes variations d'un mot et une forme canonique Faire une liste de synonymes Réseau BD 11/12/0817

I.Luyten Inconvénients Modification du schéma Requêtes non “SQL ANSI compliant“  Difficultés si on veut générer les requêtes à partir d’outils du type hibernate. SGBD spécifique Réseau BD 11/12/0818

I.Luyten Réseau BD 11/12/0819 Questions ?

I.Luyten Architecture n-tiers et URGI Réseau BD 11/12/0820 Hibernate Spring Oracle Struts AndroMDA Magic Draw Outils URGI Diag. UML Lucene PostgreSQL Hibernate search