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

MS SQL Server Discussion :

Est-ce que la recherche full-text peut compter le nombre d'occurrence d'un mot


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 16
    Points : 10
    Points
    10
    Par défaut Est-ce que la recherche full-text peut compter le nombre d'occurrence d'un mot
    Bonjour,

    J'utilise la recherche full-text d'SQL Serveur 2005 pour indexer des documents PDFs dans un champ de type varbinary(max). L'indexation et la recherche se passe bien ; mon soucis est de savoir combien d'occurrences d'un mot recherché se trouve dans le document retourné par le requête SQL.

    Exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM MaTableIndexee WHERE freetext([maColonne], 'Microsoft');
    Ce script SQL me retourne X documents et je voudrais savoir combien de fois le mot 'Microsoft' apparaît dans chaque documents. Est-ce que c'est possible ?

    Merci d'avance!

  2. #2
    Membre à l'essai
    Inscrit en
    Avril 2005
    Messages
    16
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 16
    Points : 10
    Points
    10
    Par défaut
    Pour attaquer le problème différemment vu que ca n'a pas l'air d'inspirer grand monde, j'essaye d'utiliser la fonction 'charindex' dans une fonction pour compter le nombre d'occurrence dans mon champ.
    Voici ma fonction:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
     
    CREATE FUNCTION GetIterations(@mySearch nvarchar(max),@myVarBinary as varbinary(max))
    RETURNS int
    AS
    BEGIN
    	DECLARE @position int
    	DECLARE @nbrOcc int
    	SET @position=0
    	SET @nbrOcc=0
    	WHILE charindex(@mySearch,@myVarBinary,@position)>@position
    	BEGIN
    		SET @position=charindex(@mySearch,@myVarBinary,@position)
    		SET @nbrOcc=@nbrOcc+1
    	END
    	RETURN(@nbrOcc)
    END
    Cependant un 'select' en utilisant la fonction 'charindex' sur ma colonne de type VarBinary(max) ne me renvoit pas un bon résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT charindex('Microsoft', maColonne) FROM MaTableIndexee where id = 1;
    Me donne comme résultat 0 alors que le mot se trouve bien dans mon document qui est retourné lors de la sélection suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    SELECT * FROM MaTableIndexee WHERE freetext([maColonne], 'Microsoft');
    Mon problème vient surement du fait de la conversion de mon champ (maColonne) de type varbinary(max) en chaine de caractère ... une idée ???

    Merci d'avance.

Discussions similaires

  1. Compter le nombre d'occurrences d'un mot dans un fichier texte
    Par kandro dans le forum Shell et commandes GNU
    Réponses: 8
    Dernier message: 31/12/2011, 15h32
  2. [recherche FULL TEXT ]
    Par viny dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 20/09/2006, 17h08
  3. [MySQL] Recherche FULL TEXT IN BOOLEAN MODE et les Quotes
    Par GarGamel55 dans le forum PHP & Base de données
    Réponses: 10
    Dernier message: 23/01/2006, 20h01
  4. [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
  5. 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