OVH Cloud OVH Cloud

Acents dans Catalogue de Textes

7 réponses
Avatar
Stan Sainte-Rose
Bonjour,

Certainement une question récurrente, mais j'aimerais savoir comment
effectuer une requête qui pourrait retrouver des données comprenant de
caractères accentués si l'utilisateur ne saisit pas ces derniers.
J'utilise un Catalogue de Textes, et apparemment ma requête basique ne me
remonte pas les enregistrements.
Comme exemple, voici une table très simple (clef/valeur) sur laquelle j'ai
également généré un catalogue.
A noter que j'ai utilisé la collation French_CI_AI sur la colonne valeur.

1 - Tissé
2 - Aperçu
3 - Hôpital

En utilisant cette requête : Select clef,valeur From MaTable Where valeur
like '%tisse%'

J'obtiens bien l'enregistrement 1.

En utilisant le catalogue avec cette requete : Select clef,valeur From
MonCatalogue Where FreeText (valeur,'tisse')
Je n'obtiens rien.
En rajoutant l'accent (Select clef,valeur From MonCatalogue Where FreeText
(valeur,'tissé'))
J'ai bien ma ligne.

Aurais je raté un truc ?

Stan

7 réponses

Avatar
Fred BROUARD
Les collation n'opèrent pas sur l'indexation textuelle mode MS...

A lire sur le sujet :
http://sqlpro.developpez.com/cours/indextextuelle/

A +

Stan Sainte-Rose a écrit:
Bonjour,

Certainement une question récurrente, mais j'aimerais savoir comment
effectuer une requête qui pourrait retrouver des données comprenant de
caractères accentués si l'utilisateur ne saisit pas ces derniers.
J'utilise un Catalogue de Textes, et apparemment ma requête basique ne me
remonte pas les enregistrements.
Comme exemple, voici une table très simple (clef/valeur) sur laquelle j'ai
également généré un catalogue.
A noter que j'ai utilisé la collation French_CI_AI sur la colonne valeur.

1 - Tissé
2 - Aperçu
3 - Hôpital

En utilisant cette requête : Select clef,valeur From MaTable Where valeur
like '%tisse%'

J'obtiens bien l'enregistrement 1.

En utilisant le catalogue avec cette requete : Select clef,valeur From
MonCatalogue Where FreeText (valeur,'tisse')
Je n'obtiens rien.
En rajoutant l'accent (Select clef,valeur From MonCatalogue Where FreeText
(valeur,'tissé'))
J'ai bien ma ligne.

Aurais je raté un truc ?

Stan





--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Avatar
Stan Sainte-Rose
Salut Fred,

Merci pour le lien..
Juste une question pratique. Serait il opportun dans ce cas de créer un
champ dans la table qui serait utilisé pour le catalogue et dans lequel je
stockerai l'équivalent de mon champs Valeur mais en substituant tous les
caractères accentués par des caractères non accentués ?

Stan


"Fred BROUARD" a écrit dans le message de news:

Les collation n'opèrent pas sur l'indexation textuelle mode MS...

A lire sur le sujet :
http://sqlpro.developpez.com/cours/indextextuelle/

A +

Stan Sainte-Rose a écrit:
Bonjour,

Certainement une question récurrente, mais j'aimerais savoir comment
effectuer une requête qui pourrait retrouver des données comprenant de
caractères accentués si l'utilisateur ne saisit pas ces derniers.
J'utilise un Catalogue de Textes, et apparemment ma requête basique ne me
remonte pas les enregistrements.
Comme exemple, voici une table très simple (clef/valeur) sur laquelle
j'ai également généré un catalogue.
A noter que j'ai utilisé la collation French_CI_AI sur la colonne valeur.

1 - Tissé
2 - Aperçu
3 - Hôpital

En utilisant cette requête : Select clef,valeur From MaTable Where valeur
like '%tisse%'

J'obtiens bien l'enregistrement 1.

En utilisant le catalogue avec cette requete : Select clef,valeur From
MonCatalogue Where FreeText (valeur,'tisse')
Je n'obtiens rien.
En rajoutant l'accent (Select clef,valeur From MonCatalogue Where
FreeText (valeur,'tissé'))
J'ai bien ma ligne.

Aurais je raté un truc ?

Stan



--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************



Avatar
Fred BROUARD
Oui, cela s'apelle des phrases dégradées.

Pour cela tu peut utiliser une de mes UDF qui fait du remplacement de caractères :
http://sqlpro.developpez.com/cours/sqlserver/udf/
voir FN_TRANSLATE

A +

--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************

Stan Sainte-Rose a écrit:
Salut Fred,

Merci pour le lien..
Juste une question pratique. Serait il opportun dans ce cas de créer un
champ dans la table qui serait utilisé pour le catalogue et dans lequel je
stockerai l'équivalent de mon champs Valeur mais en substituant tous les
caractères accentués par des caractères non accentués ?

Stan


"Fred BROUARD" a écrit dans le message de news:


Les collation n'opèrent pas sur l'indexation textuelle mode MS...

A lire sur le sujet :
http://sqlpro.developpez.com/cours/indextextuelle/

A +

Stan Sainte-Rose a écrit:

Bonjour,

Certainement une question récurrente, mais j'aimerais savoir comment
effectuer une requête qui pourrait retrouver des données comprenant de
caractères accentués si l'utilisateur ne saisit pas ces derniers.
J'utilise un Catalogue de Textes, et apparemment ma requête basique ne me
remonte pas les enregistrements.
Comme exemple, voici une table très simple (clef/valeur) sur laquelle
j'ai également généré un catalogue.
A noter que j'ai utilisé la collation French_CI_AI sur la colonne valeur.

1 - Tissé
2 - Aperçu
3 - Hôpital

En utilisant cette requête : Select clef,valeur From MaTable Where valeur
like '%tisse%'

J'obtiens bien l'enregistrement 1.

En utilisant le catalogue avec cette requete : Select clef,valeur From
MonCatalogue Where FreeText (valeur,'tisse')
Je n'obtiens rien.
En rajoutant l'accent (Select clef,valeur From MonCatalogue Where
FreeText (valeur,'tissé'))
J'ai bien ma ligne.

Aurais je raté un truc ?

Stan



--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************








Avatar
Sylvain Lafontaine
C'est probablement la meilleure idée, d'autant plus que le prix du Gig
diminue constamment. C'est d'ailleurs la solution que j'ai moi-même retenu
voilà cinq ans.

--
Sylvain Lafontaine, ing.
MVP - Technologies Virtual-PC
E-mail: http://cerbermail.com/?QugbLEWINF


"Stan Sainte-Rose" wrote in message
news:
Salut Fred,

Merci pour le lien..
Juste une question pratique. Serait il opportun dans ce cas de créer un
champ dans la table qui serait utilisé pour le catalogue et dans lequel je
stockerai l'équivalent de mon champs Valeur mais en substituant tous les
caractères accentués par des caractères non accentués ?

Stan


"Fred BROUARD" a écrit dans le message de
news:
Les collation n'opèrent pas sur l'indexation textuelle mode MS...

A lire sur le sujet :
http://sqlpro.developpez.com/cours/indextextuelle/

A +

Stan Sainte-Rose a écrit:
Bonjour,

Certainement une question récurrente, mais j'aimerais savoir comment
effectuer une requête qui pourrait retrouver des données comprenant de
caractères accentués si l'utilisateur ne saisit pas ces derniers.
J'utilise un Catalogue de Textes, et apparemment ma requête basique ne
me remonte pas les enregistrements.
Comme exemple, voici une table très simple (clef/valeur) sur laquelle
j'ai également généré un catalogue.
A noter que j'ai utilisé la collation French_CI_AI sur la colonne
valeur.

1 - Tissé
2 - Aperçu
3 - Hôpital

En utilisant cette requête : Select clef,valeur From MaTable Where
valeur like '%tisse%'

J'obtiens bien l'enregistrement 1.

En utilisant le catalogue avec cette requete : Select clef,valeur From
MonCatalogue Where FreeText (valeur,'tisse')
Je n'obtiens rien.
En rajoutant l'accent (Select clef,valeur From MonCatalogue Where
FreeText (valeur,'tissé'))
J'ai bien ma ligne.

Aurais je raté un truc ?

Stan



--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************







Avatar
Stan Sainte-Rose
Merci encore une fois :-)

Juste une question pratique pour un moteur de recherche efficace .
Quelle serait la meilleure méthode à appliquer si un utilisateur effectue
une recherche.
Imaginons par une exemple une table comprenant des champs suivants

table rouge
vin rouge
vin de table
table basse


Si l'utilisateur tape "table rouge"
est il préférable de remonter uniquement le premier enregistrement ou tous
les enregistrements dans lesquels il y aurait table et/ou rouge ?

Autre question, si il tape tables rouges, est il possible de remonter
également le 1er enregistrement (et en fonction de la réponse précédente,
les éléments liés à cette réponse). ?


Stan








"Fred BROUARD" a écrit dans le message de news:
%
Oui, cela s'apelle des phrases dégradées.

Pour cela tu peut utiliser une de mes UDF qui fait du remplacement de
caractères :
http://sqlpro.developpez.com/cours/sqlserver/udf/
voir FN_TRANSLATE

A +

--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************

Stan Sainte-Rose a écrit:
Salut Fred,

Merci pour le lien..
Juste une question pratique. Serait il opportun dans ce cas de créer un
champ dans la table qui serait utilisé pour le catalogue et dans lequel
je stockerai l'équivalent de mon champs Valeur mais en substituant tous
les caractères accentués par des caractères non accentués ?

Stan


"Fred BROUARD" a écrit dans le message de
news:

Les collation n'opèrent pas sur l'indexation textuelle mode MS...

A lire sur le sujet :
http://sqlpro.developpez.com/cours/indextextuelle/

A +

Stan Sainte-Rose a écrit:

Bonjour,

Certainement une question récurrente, mais j'aimerais savoir comment
effectuer une requête qui pourrait retrouver des données comprenant de
caractères accentués si l'utilisateur ne saisit pas ces derniers.
J'utilise un Catalogue de Textes, et apparemment ma requête basique ne
me remonte pas les enregistrements.
Comme exemple, voici une table très simple (clef/valeur) sur laquelle
j'ai également généré un catalogue.
A noter que j'ai utilisé la collation French_CI_AI sur la colonne
valeur.

1 - Tissé
2 - Aperçu
3 - Hôpital

En utilisant cette requête : Select clef,valeur From MaTable Where
valeur like '%tisse%'

J'obtiens bien l'enregistrement 1.

En utilisant le catalogue avec cette requete : Select clef,valeur From
MonCatalogue Where FreeText (valeur,'tisse')
Je n'obtiens rien.
En rajoutant l'accent (Select clef,valeur From MonCatalogue Where
FreeText (valeur,'tissé'))
J'ai bien ma ligne.

Aurais je raté un truc ?

Stan



--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************











Avatar
Fred BROUARD
Faire un scoring du genre :
Pour chaque mot trouvé exactement alors 1 point,
Pour chaque forme flêchie trouvée alors 0.75 point
Pour chaque synonyme trouvé alors 0.67 point
Pour chaque mot de même famille trouvée alors 0.58
Pour chaque homonyme trouvé alors 0.5...
Faire le cumul des points et diviser par le nombre de mots trouvé.

Exemple :

Mots cherché : table rouge

Mots trouvés score
------------------- -----------------
table rouge (1 + 1) / 2 = 1 (soit 100%)
tables rouge (.75 + 1)/2 = 0.875 (soit 87,5 %)
table rougeaude (1 + 0.58)/2 = 0.79 (soit 79 %)
étable rougeaude (0.58 + 0.58)/2 = 1.16 (soit 58 %
etc...

A relire : http://sqlpro.developpez.com/cours/indextextuelle/#L4
4. Mesure de pertinence

A +

Stan Sainte-Rose a écrit:
Merci encore une fois :-)

Juste une question pratique pour un moteur de recherche efficace .
Quelle serait la meilleure méthode à appliquer si un utilisateur effectue
une recherche.
Imaginons par une exemple une table comprenant des champs suivants

table rouge
vin rouge
vin de table
table basse


Si l'utilisateur tape "table rouge"
est il préférable de remonter uniquement le premier enregistrement ou tous
les enregistrements dans lesquels il y aurait table et/ou rouge ?

Autre question, si il tape tables rouges, est il possible de remonter
également le 1er enregistrement (et en fonction de la réponse précédente,
les éléments liés à cette réponse). ?


Stan








"Fred BROUARD" a écrit dans le message de news:
%

Oui, cela s'apelle des phrases dégradées.

Pour cela tu peut utiliser une de mes UDF qui fait du remplacement de
caractères :
http://sqlpro.developpez.com/cours/sqlserver/udf/
voir FN_TRANSLATE

A +

--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************

Stan Sainte-Rose a écrit:

Salut Fred,

Merci pour le lien..
Juste une question pratique. Serait il opportun dans ce cas de créer un
champ dans la table qui serait utilisé pour le catalogue et dans lequel
je stockerai l'équivalent de mon champs Valeur mais en substituant tous
les caractères accentués par des caractères non accentués ?

Stan


"Fred BROUARD" a écrit dans le message de
news:


Les collation n'opèrent pas sur l'indexation textuelle mode MS...

A lire sur le sujet :
http://sqlpro.developpez.com/cours/indextextuelle/

A +

Stan Sainte-Rose a écrit:


Bonjour,

Certainement une question récurrente, mais j'aimerais savoir comment
effectuer une requête qui pourrait retrouver des données comprenant de
caractères accentués si l'utilisateur ne saisit pas ces derniers.
J'utilise un Catalogue de Textes, et apparemment ma requête basique ne
me remonte pas les enregistrements.
Comme exemple, voici une table très simple (clef/valeur) sur laquelle
j'ai également généré un catalogue.
A noter que j'ai utilisé la collation French_CI_AI sur la colonne
valeur.

1 - Tissé
2 - Aperçu
3 - Hôpital

En utilisant cette requête : Select clef,valeur From MaTable Where
valeur like '%tisse%'

J'obtiens bien l'enregistrement 1.

En utilisant le catalogue avec cette requete : Select clef,valeur From
MonCatalogue Where FreeText (valeur,'tisse')
Je n'obtiens rien.
En rajoutant l'accent (Select clef,valeur From MonCatalogue Where
FreeText (valeur,'tissé'))
J'ai bien ma ligne.

Aurais je raté un truc ?

Stan



--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************















--
Frédéric BROUARD, MVP SQL Server. Expert SQL / spécialiste Delphi, web
Livre SQL - col. Référence : http://sqlpro.developpez.com/bookSQL.html
Le site du SQL, pour débutants et pros : http://sqlpro.developpez.com
************************ www.datasapiens.com *************************
Avatar
Pierre Goiffon
Stan Sainte-Rose wrote:
Juste une question pratique. Serait il opportun dans ce cas de créer un
champ dans la table qui serait utilisé pour le catalogue et dans lequel je
stockerai l'équivalent de mon champs Valeur mais en substituant tous les
caractères accentués par des caractères non accentués ?



Ca ne fonctionnera pas si dans une phrase un mot est saisi avec accents
et un autre sans accents...

Il reste toujours le moyen de faire avec like : like 'accentu[éeèê]'
Mais on ne peut pas parler de modèle d'opimisation :)