Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2215 connectés 

  FORUM HardWare.fr
  Programmation

  INDEXATION - SQL - REQUETES SPECIALES !!

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

INDEXATION - SQL - REQUETES SPECIALES !!

n°19217
k666
dites non à petitmou
Posté le 19-03-2001 à 11:48:22  profilanswer
 

Salut!  
on a des grosses tables et on aimerait bien savoir keskelles contiennent,
en gros, j'aimerai savoir si ya moyten d avoir les mots qui apparaissent le plus souvent dans ces tables indexées....
en gros gros, d avoir:
 
mot    // nb_apparitions
---------------------
chocolat  // 30000 apparitions
orange    // 15000 apparitions...
 
 
comment quon fait pour faire ça???? svp! c urgentissime !!!! merci :)
 
ps: j aimerai pas avoir à utiliser un dictionnaire et faire 1000000 de requêtes ;)

 

[edit]--Message édité par k666--[/edit]

mood
Publicité
Posté le 19-03-2001 à 11:48:22  profilanswer
 

n°19227
k666
dites non à petitmou
Posté le 19-03-2001 à 12:32:59  profilanswer
 

:D qui dit mieux?  :D

n°19252
k666
dites non à petitmou
Posté le 19-03-2001 à 14:14:06  profilanswer
 

zêtes surs? :lol:  :hello:

 

[edit]--Message édité par k666--[/edit]

n°19255
jupiler
Un cousin...
Posté le 19-03-2001 à 14:34:30  profilanswer
 

ben suppose que tu as une table "voitures" avec une colonne couleur.
 
tu fais :
 
select couleur,count(*) from voiture
group by couleur
 
t'obtiendras un truc du genre
 
bleu | 5
rouge | 7
vert | 3
 
tu as le nombre d'itérations.
 
bien sur il faudra une requête par colonne


---------------
Je ne suis ni pour, ni contre, bien au contraire  
n°19258
k666
dites non à petitmou
Posté le 19-03-2001 à 14:47:17  profilanswer
 

bah ché po si c ce que je voulais vraiment faire!
en fait avec ta méthode, je trouve le nombre de "combinaisons de mots" et je veux chercher le nombre de mots, donc en passant par un index!
donc comment faire???

n°19259
jupiler
Un cousin...
Posté le 19-03-2001 à 14:53:39  profilanswer
 

k666 a écrit a écrit :

bah ché po si c ce que je voulais vraiment faire!
en fait avec ta méthode, je trouve le nombre de "combinaisons de mots" et je veux chercher le nombre de mots, donc en passant par un index!
donc comment faire???




 
si tu donnais un exemple, ca se serait plus facile de t'aider, parce que la je suis pas sur de comprendre ce que tu veux


---------------
Je ne suis ni pour, ni contre, bien au contraire  
n°19261
k666
dites non à petitmou
Posté le 19-03-2001 à 14:59:13  profilanswer
 

:cry:  :cry:  
bah en fait avec ta requête je sortirai un truc du genre
 
chocolat vert   //  25
chocolat rouge  //  13
chocolat rouge et vert  // 10
chocolat  // 8  
 
et moi ske je veux c:
 
chocolat  // 86
vert  //  45
rouge  //  33
 
tu vois la subtilité? bah justement je crois que je peux faire ça simplement avec un index, qui contient des "un seul mot" et pas des "combinaison de un ou plusieurs mots"
voilà quoi....
 
en fait le problème que j'ai c que j ai une base super bizarre, avec des trucs de ouf, et j aimerai bien savoir de quoi il s agit, voir les mots qui apparaissent le plus fréquemment, et non pas les "phrases qui apparaissent le plus souvent"......voilà

 

[edit]--Message édité par k666--[/edit]

n°19265
jupiler
Un cousin...
Posté le 19-03-2001 à 15:13:54  profilanswer
 

ben si tes "phrases" sont dans un même champ, je vois pas comment
tu vas t'en sortir, ou alors utiliser une fonction SQL qui  
sépare les mots d'un champ.


---------------
Je ne suis ni pour, ni contre, bien au contraire  
n°19269
thegti
La constipation se soigne ...
Posté le 19-03-2001 à 15:39:43  profilanswer
 

bah tu dois pouvoir t'en sortir avec un like '%chocolat%'

n°19271
jupiler
Un cousin...
Posté le 19-03-2001 à 15:42:13  profilanswer
 

thegti a écrit a écrit :

bah tu dois pouvoir t'en sortir avec un like '%chocolat%'




 
mais comme ca, il doit faire une requête pour chaque mot rencontré


---------------
Je ne suis ni pour, ni contre, bien au contraire  
mood
Publicité
Posté le 19-03-2001 à 15:42:13  profilanswer
 

n°19273
k666
dites non à petitmou
Posté le 19-03-2001 à 15:44:30  profilanswer
 

thegti a écrit a écrit :

bah tu dois pouvoir t'en sortir avec un like '%chocolat%'




 
bah oué, c ça le problème, faudra balancer du dictionnaire pour faire les requêtes, et même pire que du dictionnaire, faudra faire du combinatoire à l infini de charactères!!!!!!! c la FOLLLLLLLLLLIIIIIIIIIIIIIIEEEEEEEEEEEEEEEEEEEEEEEEee  
 :o  :o  :o  
 
d où bah, voiulà, comment profiter de cette saloperie d index  :cry:  :cry:  :cry:  :cry:  :sweat:  :hello:

n°19297
jupiler
Un cousin...
Posté le 19-03-2001 à 16:46:01  profilanswer
 

un index  te servira à rien si tu "splittes" pas tes phrases.


---------------
Je ne suis ni pour, ni contre, bien au contraire  
n°19302
Lord II
PIB2000
Posté le 19-03-2001 à 16:50:00  profilanswer
 

Je réexplique le problème de K666 ( ou l'explique mieux)
 
Il existe sur la base (MS SQL7) un catalogue de texte intégral, sur une table. Le truc c'est qu'il voudrait si c'est faisable, ressortir les mots qui apparaissent le plus de fois.
 
Je ne sais pas non plus si c'est faisable, alors exprimés vous. En fait c'est pour la création de formulaires qui attaqueraient une base, on voudrait avoir cette info pour savoir les mots qui remonteraient le plus de résultats.

 

[edit]--Message édité par Lord II--[/edit]


---------------
La bave du crapaud n'empèche pas la caravane de passer .
n°19306
k666
dites non à petitmou
Posté le 19-03-2001 à 16:55:56  profilanswer
 

>jupiler:
bah jcroyais que justement un index servait entre autres à splitter les phrases, pour faciliter les recherches dans du foultexte, et accélérer la réponse pour une recherche sur un mot donné dans un champ donné.......pas moyen?

n°19338
k666
dites non à petitmou
Posté le 19-03-2001 à 17:39:35  profilanswer
 

:D trodlaballe :D

n°19537
k666
dites non à petitmou
Posté le 20-03-2001 à 14:42:16  profilanswer
 

Salut!  
on a des grosses tables et on aimerait bien savoir keskelles contiennent,  
en gros, j'aimerai savoir si ya moyten d avoir les mots qui apparaissent le plus souvent dans ces tables indexées....  
en gros gros, d avoir:  
 
mot    // nb_apparitions  
---------------------  
chocolat  // 30000 apparitions  
orange    // 15000 apparitions...  
 
 
comment quon fait pour faire ça???? svp! c urgentissime !!!! merci  
 
ps: j aimerai pas avoir à utiliser un dictionnaire et faire 1000000 de requêtes

n°19568
ddr555
Posté le 20-03-2001 à 17:47:11  profilanswer
 

impossible de faire ça avec des index en sql !!!
la requete c'est group by + like.
mais ça prendra jamais un index pour le faire.
un ch'tit prog en c qui lit toutes les données et pour p'tit algo me semble plus adapté et sera plus rapide.
Ou alors construire une table avec une liste de mots clés + un compteur d'apparition et ch'tit trigger sur ta table qui vient incrémenter/décrémenter lors d'insert/update/delete. prévoir une proc pour tout recalculer.  :D

n°19575
thegti
La constipation se soigne ...
Posté le 20-03-2001 à 18:23:19  profilanswer
 

Je vous pas le rapport avec les indexs mais bon ...
(indexer le contenu d'une colonne chaine de caractères, je crois pas que ce soit possible ..., mais pourquoi pas ...)
 
Sinon pour ton problème, faut te démerde en Transact-SQL
- un curseur sur ta table
- une boucle sur la chaine de caractères de la colonne (découpage de la chaine, utilise les fonctions CHARINDEX, PATINDEX, SUBSTRING, ...)
- dans la boucle, tu update une table de compteurs avec les résultats trouvés
 
De toute facon, le SQL ne permet de passer de 1 dimension (1 colonne) à n dimensions (n lignes) comme tu veut le faire
D'ailleurs, ca me fait penser que Access le fait, avec ses requètes croisées, comment on fait ca en SQL standard ? ...
 
Enfin bon, voilà comment je vois ton problème

n°19591
BifaceMcLe​OD
The HighGlandeur
Posté le 20-03-2001 à 19:43:58  profilanswer
 

Pour info, les index BD et les index plein-texte n'ont pas grand chose à voir. Et je n'ai jamais vu de BD qui utilise systématiquement les index plein-texte pour indexer des colonnes de type STRING.
 
Pourquoi : parce que généralement, on utilise les index plein-texte quand on a des gros textes (genre, des documents entiers). Mais les colonnes de type string dans les BDs relationnelles sont rarement de grande taille (sinon, on n'utiliserait pas des STRINGs, mais des BLOBs).
 
Ceci dit, les index BDs sur des STRINGs permettent généralement de faire des LIKE "myString*", voire aussi, pour certaines, des LIKE "*myString" de façon pas trop inefficace.

n°19642
k666
dites non à petitmou
Posté le 21-03-2001 à 10:15:09  profilanswer
 

biFace >>
avec des like faudra que je me tape plein de combinaisons différentes, or je ne sais pas ce que peut contenir la table (a priori) donc bah voià!
je pense que la meilleure méthode est celle de thegti, d'ajouter le mot dans une table s il n y est pas encore, et sil y est d incrémenter son compteur, par contre c chiant, vu qu il existe les index!!! pourkoi ya pas ce traitement qui est qd même de base? c dingue! :spookie:  :spookie:  
sinon, personne n'aurait un site oè l on puisse voir tout ce qui est faisable avec des index? qui explique la structure de ceux ci? bref, qui dise skon peut faire avec!!!!
 :jap: merci :jap:

n°19657
ddr555
Posté le 21-03-2001 à 11:12:34  profilanswer
 

un index, ça doit globalement être géré de la façon suivante : à chaque insertion d'un valeur ( entier, chaine de caractère .. ) dans une valeur indexée, il la met dans l'index correspondant et dans l'ordre souhaité ( je passe la partie constitution des fichiers index parce que là c'est compliqué et chaque système a ses propres astuces pour optimiser ). donc un index est obligatoirement sur une colonne entière, tu ne peux pas faire ça sur une partie d'une chaine de caractère. donc tu es obligé de passer par une table externe que tu alimentes avec analysant et décomposant les chaines saisies. en utilisant le même principe que la constitution des index ( unique ), sans oublier d'en utiliser un pour la recherche sur les mots, sinon ça va ramer un max.

n°19663
k666
dites non à petitmou
Posté le 21-03-2001 à 11:31:52  profilanswer
 

aille! je sais pas si on parle de "index" de la même façon..disons donc catalogue
 
c un espèce de dictionnaire, avec le mot rencontré, et au lieu de la définition du mot, bah les endroits où il a été trouvé ...
j'aimerai savoir sia moyen de traiter cet endroit où il a été trouvé ????? genre de compter combien d apparitions, dans quelles circonstances, etc.....
 :D  :D  :D

n°19664
Lord II
PIB2000
Posté le 21-03-2001 à 11:33:05  profilanswer
 

en gros parcourir le catalogue .......


---------------
La bave du crapaud n'empèche pas la caravane de passer .
n°19676
thegti
La constipation se soigne ...
Posté le 21-03-2001 à 12:35:47  profilanswer
 

Si tu veut sélectionner en plus de compter
bah je crois qu'il te faut un index plein-text dont parle BifaceMcLeOD
Mais moi aussi, j'ai jamais vu de BD qui font ca
Et ca doit bouffer un max de place car dans une chaine de taille x, il peut y avoir x/2 mots donc un index de taille x/2
A mon avis, les SGBDs ne font pas ca en standard à cause que les indexs sont de taille fixe et que les chaines de caractères rarement d'une part
Et d'autres part, définir les caractères de séparation des mots (espace, virgule, point-virgule, tabulation, espace+virgule, espace+espace+virgule)
 
A mon avis, ca sent bon la grosse usine à gaz !!

n°19677
thegti
La constipation se soigne ...
Posté le 21-03-2001 à 12:36:18  profilanswer
 

Si tu veut sélectionner en plus de compter
bah je crois qu'il te faut un index plein-text dont parle BifaceMcLeOD
Mais moi aussi, j'ai jamais vu de BD qui font ca
Et ca doit bouffer un max de place car dans une chaine de taille x, il peut y avoir x/2 mots donc un index de taille x/2
A mon avis, les SGBDs ne font pas ca en standard à cause que les indexs sont de taille fixe et que les chaines de caractères rarement d'une part
Et d'autres part, définir les caractères de séparation des mots (espace, virgule, point-virgule, tabulation, espace+virgule, espace+espace+virgule)
 
A mon avis, ca sent bon la grosse usine à gaz !!

n°19717
k666
dites non à petitmou
Posté le 21-03-2001 à 14:43:15  profilanswer
 

bah ça a l air un peu chaud!
jcrois que je vais opter pour du c++ pour faire le tri....
maintenant, eske vous savez où je pourrais trouver un algorithme qui ordonne en ordre alphabétique toute une batteria géante de mots, et qui mette le nombre d apparitions?? ça doit exister ça, en déjà fait c clair!
si kelkun peut m éclairer? merci :)
 :jap:  :jap:  :jap:  :jap:  :jap:  :jap:

n°19718
ddr555
Posté le 21-03-2001 à 14:50:56  profilanswer
 

quick sort RULEZZZZZZZZZZZZZZZZz

n°19720
k666
dites non à petitmou
Posté le 21-03-2001 à 14:59:47  profilanswer
 

ddr555 a écrit a écrit :

quick sort RULEZZZZZZZZZZZZZZZZz




 
;)
jpensais exactement à ça! par contre tu sais pas où je peux en pécho un comme sui ke jveux?

n°19721
ddr555
Posté le 21-03-2001 à 15:03:51  profilanswer
 

Dans tout bon bouquin d'algo qui se doit  :D

mood
Publicité
Posté le   profilanswer
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation

  INDEXATION - SQL - REQUETES SPECIALES !!

 

Sujets relatifs
Est ce ke kkun s'y connait en SQL/C ou SQL Dynamique ?[ASP] [SQL] comment faire un pack sur une base DBF ??
[PHP;SQL] comment bien debuter ?Visual C++ & SQL
comment faire du SQL 2 sous win2000 ?[MySQL] Installer My SQL sur Xitami
Besoin aide PHP pour me connecter et envoyer requettes SQL à InterbaseType de données sous SQL server 7.0
[SQL] Probleme de requeteLancer des Fonctions Stockées sur SQL Server depuis VB ?
Plus de sujets relatifs à : INDEXATION - SQL - REQUETES SPECIALES !!


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR