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 :

Full-Text - StopList personalisée


Sujet :

Développement SQL Server

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Octobre 2007
    Messages : 30
    Par défaut Full-Text - StopList personalisée
    Bonjour,

    J'ai un problème avec les termes de type d',l' ect ... ceux ci ressortent en "Exact Match".
    Ce qui fait que j'ai un retour de FREETEXTTABLE() pollué avec les correspondances des termes de type d',l' ...


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM sys.dm_fts_parser('"je viens d''arriver"', 1036,5, 0)
    Nom : Capture.JPG
Affichages : 266
Taille : 32,4 Ko

    Malgré le fait d'avoir ajouté le terme à ma Stoplist perso, que j'ai créé en dupliquant la stoplist systéme

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    CREATE FULLTEXT STOPLIST stoplist_perso FROM  SYSTEM STOPLIST;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    ALTER FULLTEXT STOPLIST stoplist_perso ADD 'd''' LANGUAGE 1036;
     
    SELECT * FROM sys.fulltext_stopwords WHERE LANGUAGE =  'french' AND stopword LIKE '%''%';
    Nom : Capture2.JPG
Affichages : 259
Taille : 11,7 Ko


    Ais-je oublié quelque chose ?


    En tout cas, merci d'avance.

    Jak59

  2. #2
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    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 : 22 002
    Billets dans le blog
    6
    Par défaut
    Il ne faut pas mettre les apostrophes. Ensuite la copie de la liste par défaut dépend de la langue contextuelle.

    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/ * * * * *

  3. #3
    Membre averti
    Inscrit en
    Octobre 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Octobre 2007
    Messages : 30
    Par défaut [2008R2] Full-Text - StopList personalisée
    Citation Envoyé par SQLpro Voir le message
    Il ne faut pas mettre les apostrophes. Ensuite la copie de la liste par défaut dépend de la langue contextuelle.
    Bonjour,

    La stoplist dupliquée est bien la française. Je l'ai d'ailleurs enrichie avec d'autres termes, et cela fonctionne très bien.

    Si vous parlez des apostrophes dans le terme "d'" qui a été ajouté à la stoplist, j'avais fait le test avec le terme "d" et celui-ci existe déjà dans la stoplist système, et il est bien topé en noiseword.

    Bon, j'ai l'impression qu'sqlserver2008R2 ne sait pas gérer ce cas (des stopwords de type "d'", "c'" ect ...) . Je vais donc même si cela ne me plaît pas, nettoyer la chaîne de recherche.
    Et tester, pour voir, sur une version d'sql-server plus récente.

    Cordialement,

  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
    22 002
    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 : 22 002
    Billets dans le blog
    6
    Par défaut
    SQL Server indexe TOUS les mots sans aucune exception. Ce n'est que lors de la restitution que vous devez indiquer que vous voulez ou non éliminer les mots noirs. En effet, tantôt tel ou tel mot pourra être considéré comme noir ou non. Un exemple : le mot MAIS est considéré comme mot noir. Mais si nous voulons chercher du MAÏS, et que nous n'avons pas pris l'option de sensibilité à la casse, alors il faudra ne plus exclure les mots noirs….

    Le sujet est donc plus complexe qu'il n'y parait et retirer d'office certains mots avant de les indexer vous posera des problèmes bien plus graves par la suite…. par exemple comment retrouver un texte dans lequel on parle de programmation en langage C ?


    D'ailleurs vous ne montrez aucun exemple avec lequel vous vous êtes confrontés. Je pense alors que vous ne savez pas utiliser l'opérateur FREETEXT...

    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 averti
    Inscrit en
    Octobre 2007
    Messages
    30
    Détails du profil
    Informations personnelles :
    Âge : 46

    Informations forums :
    Inscription : Octobre 2007
    Messages : 30
    Par défaut
    Citation Envoyé par SQLpro Voir le message
    Je pense alors que vous ne savez pas utiliser l'opérateur FREETEXT...
    Ha oui, je suis d'accord avec vous. Mais j'essaie de comprendre.


    Voici le test que j'ai effectué :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    DECLARE @string VARCHAR(200) = 'Licence de l''Environnement'
     
    SELECT 
    	f.libelle_formation
    	, t.RANK rang
    FROM    dbo.V_Formation f
    	INNER JOIN FREETEXTTABLE(formation, [libelle_formation], @string) AS t ON f.id_formation = t.[KEY]				
    ORDER BY t.RANK DESC
    Des enregistrements en lien avec le l' de la recherche remontent. (A partir de la ligne 31 sur ma capture d'écran)
    Nom : Capture3.JPG
Affichages : 268
Taille : 221,7 Ko

    J'ai constaté que le terme l' n'était pas considéré comme un mot à exclure du résultat de la recherche:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM sys.dm_fts_parser('"Licence de l''environnement"', 1036,5, 0)
    Nom : Capture4.JPG
Affichages : 241
Taille : 40,4 Ko


    C'est pour exclure les résultats ayant une correspondance avec le l' de la recherche que j'ai créé une stoplist perso en y ajoutant le terme l'.

  6. #6
    Rédacteur

    Avatar de SQLpro
    Homme Profil pro
    Expert bases de données / SQL / MS SQL Server / Postgresql
    Inscrit en
    Mai 2002
    Messages
    22 002
    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 : 22 002
    Billets dans le blog
    6
    Par défaut
    Vous n'avez pas posté les commande de création du catalogue ni de l'index.

    Complétez votre script.

    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/ * * * * *

Discussions similaires

  1. [MSSQL 2k8 R2] Full Text stoplist
    Par DotNetMatt dans le forum Développement
    Réponses: 3
    Dernier message: 21/07/2010, 14h44
  2. probleme avec une requete full text
    Par maxxou dans le forum Langage SQL
    Réponses: 2
    Dernier message: 07/03/2005, 17h20
  3. [Info]moteur de recherche full text en environnement j2ee
    Par ddams dans le forum API standards et tierces
    Réponses: 4
    Dernier message: 03/11/2004, 19h39
  4. Recherche FULL Text existe que dans MySql ?
    Par seb.49 dans le forum Décisions SGBD
    Réponses: 1
    Dernier message: 01/06/2004, 22h30

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