IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage SQL Discussion :

ARTICLE : indexation textuelle et recherches plain texte


Sujet :

Langage SQL

  1. #1
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 902
    Points : 51 646
    Points
    51 646
    Billets dans le blog
    6
    Par défaut ARTICLE : indexation textuelle et recherches plain texte
    Bonjour

    voici le lien vers un article consacré à l'indexation textuelle et la recherche dite "plain texte" (full text search) selon la norme SQL, et avec une comparaison des implémentations de Oracle MySQL et Microsoft SQL Server.

    http://blog.developpez.com/sqlpro/p9...ext-search-no/

    Vos commentaires sont les bienvenus.

  2. #2
    Membre émérite

    Homme Profil pro
    Chargé de Développement et d'Analyse de données
    Inscrit en
    Mars 2010
    Messages
    1 278
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé de Développement et d'Analyse de données
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2010
    Messages : 1 278
    Points : 2 856
    Points
    2 856
    Par défaut
    Billet intéressant

    Surtout la mise en perspective des possibilités des 2 SGBD : MySQL5.0 et MSSQL.

    Est ce que Oracle (par exemple Oracle 10g ou 11g) possède plus de possibilités Full Text Search que MySQL5.0 ?

    Ceci dit, je suis un peu dubitatif quant à la notion de synonymie que propose MSSQL

    Prenons un exemple. Le code suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CONTAINS((LVR_TITRE,LVR_RESUME),''FORMSOF(THESAURUS,"militaire") ',LANGUAGE 'French')
    va chercher les synonymes du mot militaire... mais cette recherche se base sur quel dictionnaire ? et quel dictionnaire de quel domaine ?

    Je m'explique. Essaye d'obtenir la liste des synonymes du mot militaire dans différents dictionnaire.

    Dico des synonymes de l'université de caen :
    -------------------------------------------
    http://www.crisco.unicaen.fr/cgi-bin/cherches.cgi
    liste des synonymes :
    baderne, belliqueux, boucher, engagé, guerrier, homme de guerre, martial, polémologique, soldat, soldatesque, stratégique, tactique.

    Dico du cnrs : http://dico.isc.cnrs.fr/dico/fr/chercher
    ------------
    liste des synonymes :
    baderne, belliqueux, guerrier, martial, soldat, soldatesque,homme de guerre,officier,polémologique,sous-officier,stratégique, tactique
    Quand on met en regard ces 2 listes, on se rend compte que selon le dictionnaire utilisé la liste des synonymes n'est pas la même.

    Si on consulte le Trésor de la Langue Française (TLF)
    --------------------------------------------------
    On se rend également compte que le TLF a aussi sa liste de synonymes pour le mot "militaire"

    Petite conclusion :
    -------------------
    --> D'un dico à un autre la notion de synonymie est variable !
    --> Aussi il faut noter également que le synonyme d'un mot varie selon le domaine (Médécine, Informatique, Cuisine, ...)
    Exemple : Table (en base de données) n'a pas les mêmes synonymes
    que Table (en Cuisine)

    D'où ma question :
    ---------------
    Est-il possible d'indiquer à MSSQL Server quel dico utiliser pour Full Text Search ?
    C'est à dire que si je dispose d'un dctionnaire de synonymes dans le domaine Médical par exemple, est-il possible :
    1.) Incorporer (d'attacher) ce dico à SQL Server ?
    2.) D'indiquer à SQL Server d'utiliser ce dico lors de la recherche de synonymes ?


    Un mot sur la notion de proximité proposée par MSSQL :

    La commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CONTAINS((LVR_TITRE ,LVR_RESUME),' "guerre" NEAR "paix" ')
    retourne les lignes contenant "guerre" à proximité du mot "paix"

    C'est ce qu'on appelle la collocation en lingustique.

    Est-il possible de rechercher les lignes contenant le mot "guerre" dont le mot "paix" n'est pas colocataire ?
    c'est à dire un NEAR NOT ?

    A+

  3. #3
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 902
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Expert bases de données / SQL / MS SQL Server / Postgresql
    Secteur : Conseil

    Informations forums :
    Inscription : Mai 2002
    Messages : 21 902
    Points : 51 646
    Points
    51 646
    Billets dans le blog
    6
    Par défaut
    1) sur la synonimisation, la norme SQL à prévue de multiples thésaurus que l'on indique dans le prédicat de recherche, tandis que SQL Server constitue un seul thésaurus pas langue. Mais comme il s'agit d'un fichier XML que l'on peut éditer, alors il est facile d'en éditer plusieurs pour différents domaines sémantiques. Mais le changement de thésaurus par domaine sémantique n'est pas dynamique.

    C'est à dire que si je dispose d'un dictionnaire de synonymes dans le domaine Médical par exemple, est-il possible :
    1.) Incorporer (d'attacher) ce dico à SQL Server ?
    2.) D'indiquer à SQL Server d'utiliser ce dico lors de la recherche de synonymes ?
    1) OUI
    2) NON, car c'est par le biais du paramètre de langue qu'il choisira le bon thésaurus.

    2) sur le NEAR, NOT NEAR, je n'ai pas la norme sous les yeux, mais j'imagine qu'il a été prévu ! En revanche pas sous SQL Server.
    mais il n'est pas complexe de réaliser ceci à l'aide de requêtes ensembliste du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ... FROM ... WHERE CONTAINS ( "terme1" )
    EXCEPT
    SELECT ... FROM ... WHERE CONTAINS ( "terme1" NEAR "terme2" )
    A +

Discussions similaires

  1. [BLOB] Recherche plain text dans BLOB
    Par nabich dans le forum PL/SQL
    Réponses: 3
    Dernier message: 30/11/2010, 20h06
  2. ARTICLE :indexation textuelle et recherches plain texte.
    Par SQLpro dans le forum Développement
    Réponses: 3
    Dernier message: 04/10/2010, 13h53
  3. Réponses: 0
    Dernier message: 04/10/2010, 09h13
  4. indexation plain text
    Par hamma2 dans le forum SQL Procédural
    Réponses: 1
    Dernier message: 08/02/2010, 13h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo