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

Développement SQL Server Discussion :

Fulltext FREETEXTTABLE avec *


Sujet :

Développement SQL Server

  1. #1
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 199
    Points : 70
    Points
    70
    Par défaut Fulltext FREETEXTTABLE avec *
    Bonjour,

    J'ai une requete sur un index fulltext qui est la suivante

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    select tt.*,communication.* from communication INNER 
    JOIN (
    select [KEY],[rank] from CONTAINSTABLE(communication,contenu,'alerte')
    ) as tt
    ON communication.id_communication=tt.[key]
    order by [rank] desc
    Mon problème est que cela me retourne les résultat pour les contenu qui contienne le mot "alerte"

    si j'ai des mots dans mon index tel que "lalerte" ou "balerte"..., les résultat ne me sont pas retourné

    Par contre, si je fait un like "%alerte%", tout est retourné correctement

    Comment faire, avec FREETEXTTABLE (ou CONTAINSTABLE) pour récupérer ces résultats ?

    Je cherche mais je n'arrive pas à trouver.

    Merci pour votre aide
    Sylo

  2. #2
    Modérateur

    Profil pro
    dba
    Inscrit en
    Janvier 2010
    Messages
    5 643
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : dba

    Informations forums :
    Inscription : Janvier 2010
    Messages : 5 643
    Points : 13 092
    Points
    13 092
    Par défaut
    Bonjour,

    C'est le comportement normal de la recherche full text.
    Vous pouvez chercher les formes fléchies, mais pas de truc qui n'ont rien avoir, si ce n'est des lettres en commun.

    Si votre besoin est bien de trouver "lalerte" en cherchant "alerte", alors ce n'est pas de la recherche full text qu'il vous faut

  3. #3
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 199
    Points : 70
    Points
    70
    Par défaut
    et il n'y a pas de recherche fuzzy comme dans lucene ?

  4. #4
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 766
    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 766
    Points : 52 563
    Points
    52 563
    Billets dans le blog
    5
    Par défaut
    Citation Envoyé par aieeeuuuuu Voir le message
    Bonjour,

    C'est le comportement normal de la recherche full text.
    Vous pouvez chercher les formes fléchies, mais pas de truc qui n'ont rien avoir, si ce n'est des lettres en commun.

    Si votre besoin est bien de trouver "lalerte" en cherchant "alerte", alors ce n'est pas de la recherche full text qu'il vous faut
    Non, c'est le comportement normal de FREETEXTTABLE.
    Pour faire une recherche flou, il faut utiliser CONTAINS ou CONTAINSTABLE avec un branche de prédicat 'alerte*' ou bien par forme flechie (FORMS OF INFLECTIONNAL).

    Lisez l'article que j'ai écrit à ce sujet : http://blog.developpez.com/sqlpro/p9...text_search_no

    A +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  5. #5
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 199
    Points : 70
    Points
    70
    Par défaut
    Bonjour,
    Merci pour ce retour

    J'avais vu cette page mais elle est général...
    Il y cela:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT * 
    FROM   T_LIVRE_LVR 
    WHERE  CONTAINS ( ' "roman" | "nouve*" ') = 1
    Mais je ne vois pas comment le traduire dans sql-server
    J'avais essayé de trouver l'équivalent mais sans succés...

    Si vous pouviez me donner un exemple.
    Je voudrais avoir la requète qui me permette d'avoir tous les items qui contienne le terme "alerte" comme un "like '%alerte%'" mais dans une recherche fulltext...

    Par avance, Merci
    Sylo

  6. #6
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 199
    Points : 70
    Points
    70
    Par défaut
    J'ai essayé cela mais ça ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    SELECT FT_TBL.id_communication, KEY_TBL.*, KEY_TBL.RANK
    FROM communication AS FT_TBL 
    INNER JOIN CONTAINSTABLE(moteur_recherche, contenu,
     '"%alerte%"') AS KEY_TBL
    ON FT_TBL.id_communication = KEY_TBL.[KEY]
    ORDER BY KEY_TBL.RANK DESC
    Cela me donne que les résultat qui contienne "alerte" et pas "lalerte"...

    Avec des "*", c'est pareil...

  7. #7
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    21 766
    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 766
    Points : 52 563
    Points
    52 563
    Billets dans le blog
    5
    Par défaut
    C'est normal. Il est possible de chercher un mot débutant par, mais pas finissant par.

    Néanmoins, vous pouvez utiliser les métadonnées du FT pour implémenter des extensions de recherches.... Lire mon bouquin à ce sujet : http://www.amazon.fr/dp/2212135920 (chapitre indexation).

    a +
    Frédéric Brouard - SQLpro - ARCHITECTE DE DONNÉES - expert SGBDR et langage SQL
    Le site sur les SGBD relationnels et le langage SQL: http://sqlpro.developpez.com/
    Blog SQL, SQL Server, SGBDR : http://blog.developpez.com/sqlpro
    Expert Microsoft SQL Server - M.V.P. (Most valuable Professional) MS Corp.
    Entreprise SQL SPOT : modélisation, conseils, audit, optimisation, formation...
    * * * * * Expertise SQL Server : http://mssqlserver.fr/ * * * * *

  8. #8
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 199
    Points : 70
    Points
    70
    Par défaut
    Et bien pour moi, même en mettant l'étoile au début, cela ne fonctionne pas.
    Tant pis
    Merci pour votre aide
    Sylo

  9. #9
    Membre régulier
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2014
    Messages
    199
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Avril 2014
    Messages : 199
    Points : 70
    Points
    70
    Par défaut
    ok ca roule, j'ai fait cela:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT moteur_recherche.id_moteur_recherche,moteur_recherche.id,name,moteur_recherche.trigramme,containstab.RANK 
                FROM moteur_recherche INNER JOIN CONTAINSTABLE(moteur_recherche,contenu,'"alerte*" or "assoc*"') AS containstab 
                ON moteur_recherche.id_moteur_recherche = containstab.[KEY]
    et ca fonctionne pour les mots commencant par "alerte" ou "assoc"

    J'ai pas le contains mais cela me suffira pour l'instant.

    Merci pour la ref au bouquin

    Sylo

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Recherche Fulltext chaine avec des points
    Par pcalame dans le forum Requêtes
    Réponses: 6
    Dernier message: 15/11/2011, 08h47
  2. Problème avec la recherche FULLTEXT
    Par izbing dans le forum Requêtes
    Réponses: 6
    Dernier message: 23/01/2008, 22h13
  3. indexation fulltext des mots avec un trait d'union
    Par andraz dans le forum SQL Procédural
    Réponses: 2
    Dernier message: 12/03/2007, 16h46
  4. Problème avec MATCH - FULLTEXT
    Par Kosti dans le forum Requêtes
    Réponses: 2
    Dernier message: 27/01/2006, 01h20
  5. [MySQL] FULLTEXT, modif ft_min_word_len avec PHP
    Par Husqvarna dans le forum PHP & Base de données
    Réponses: 3
    Dernier message: 28/10/2005, 10h06

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