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

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  [MySql] Fulltext qui foire

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[MySql] Fulltext qui foire

n°1577192
nycius
Ich liebe dich !
Posté le 20-06-2007 à 11:54:37  profilanswer
 

Hello  :hello:  
 
Je fais une recherche comme cela  

Code :
  1. SELECT * FROM table WHERE MATCH (name) AGAINST ('"Aspire 9422"' IN BOOLEAN MODE)


 
Je veux qu'il me sorte donc uniquement les lignes contenant "Aspire 9422" dans n'importe quel ordre.
Ca me resort rien du tout  :heink:  :cry:

mood
Publicité
Posté le 20-06-2007 à 11:54:37  profilanswer
 

n°1577195
anapajari
s/travail/glanding on hfr/gs;
Posté le 20-06-2007 à 11:59:12  profilanswer
 

manque des + dans ton against vu que tu utilises le mode booléen.
 
remarque: j'espere que tu as bien mis un index fulltext, sinon prépare toi à tes performances pitoyables.

n°1577198
flo850
moi je
Posté le 20-06-2007 à 12:00:03  profilanswer
 

pourquoi tu mets in boolean mode sans mettre d'operateur + -  ?
( [ulr=http://dev.mysql.com/doc/refman/5.0/fr/fulltext-boolean.html] liste des operateurs[/url])

 

pas de message d'erreur avec mysql_error ?
ton index fulltext fonctionne ?

 


EDIT :burnaid


Message édité par flo850 le 20-06-2007 à 12:00:26
n°1577207
nycius
Ich liebe dich !
Posté le 20-06-2007 à 12:03:58  profilanswer
 

J'ai un index fulltext
 
Je souhaite avoir les deux mots ensembles et je peux pas découper ma chaine de caracteres a la volée.
Comment faire ?

Code :
  1. SELECT * FROM table WHERE MATCH (name) AGAINST ('+"Aspire 9422"' IN BOOLEAN MODE)

?


Message édité par nycius le 20-06-2007 à 12:04:12
n°1577214
flo850
moi je
Posté le 20-06-2007 à 12:08:16  profilanswer
 

tu peux enlever IN BOOLEAN MODE  
 
sinon, est ce que ta table comporte assez d'enregistrements ? est ce que Aspire 9422 est présent souvent ( dans + de 50% des cas  ) ?  
 
dans ces cas la , certains mots sont considérés comme non significatifs et ignorés  

n°1577215
anapajari
s/travail/glanding on hfr/gs;
Posté le 20-06-2007 à 12:08:47  profilanswer
 

lire la doc?

Citation :

#

 

'"deux mots"'
Recherche les lignes qui contiennent exactement la phrase ``deux mots'' (par exemple, les lignes qui contiennent ``deux mots d'amour'' mais pas ``le mot deux''). Notez que les caractères ‘"’ qui entourent la phrase délimitent la phrase. Ils ne délimitent pas la chaîne.

 
flo850 a écrit :

tu peux enlever IN BOOLEAN MODE


les deux n'ont pas tout à fait la même utilité

 
flo850 a écrit :

sinon, est ce que ta table comporte assez d'enregistrements ? est ce que Aspire 9422 est présent souvent ( dans + de 50% des cas  ) ?


le mode booléen par exemple n'est pas soumis au seuil de 50% ;)

 


Message cité 2 fois
Message édité par anapajari le 20-06-2007 à 12:10:01
n°1577217
nycius
Ich liebe dich !
Posté le 20-06-2007 à 12:09:41  profilanswer
 

il est présent 1 seule fois sur 1800
Je veux sortir uniquement Aspire 9422 en complet, pas 9422 tout seul ou Aspire

n°1577221
nycius
Ich liebe dich !
Posté le 20-06-2007 à 12:10:06  profilanswer
 

anapajari a écrit :

lire la doc?  

Citation :

#
 
'"deux mots"'
Recherche les lignes qui contiennent exactement la phrase ``deux mots'' (par exemple, les lignes qui contiennent ``deux mots d'amour'' mais pas ``le mot deux''). Notez que les caractères ‘"’ qui entourent la phrase délimitent la phrase. Ils ne délimitent pas la chaîne.



 
Ca a été fait, ca ne fonctionne pas

n°1577223
anapajari
s/travail/glanding on hfr/gs;
Posté le 20-06-2007 à 12:11:06  profilanswer
 

nycius a écrit :

il est présent 1 seule fois sur 1800
Je veux sortir uniquement Aspire 9422 en complet, pas 9422 tout seul ou Aspire


Alors pourquoi utiliser un match/against plutot qu'un like [:w3c compliant][:w3c compliant][:w3c compliant]

n°1577225
nycius
Ich liebe dich !
Posté le 20-06-2007 à 12:12:49  profilanswer
 

anapajari a écrit :

Alors pourquoi utiliser un match/against plutot qu'un like [:w3c compliant][:w3c compliant][:w3c compliant]


 
Parce que le LIKE fonctionnera pour "Aspire 9422" mais pas "9422 Aspire"

mood
Publicité
Posté le 20-06-2007 à 12:12:49  profilanswer
 

n°1577229
flo850
moi je
Posté le 20-06-2007 à 12:16:03  profilanswer
 

anapajari a écrit :

lire la doc?  

Citation :

#
 
'"deux mots"'
Recherche les lignes qui contiennent exactement la phrase ``deux mots'' (par exemple, les lignes qui contiennent ``deux mots d'amour'' mais pas ``le mot deux''). Notez que les caractères ‘"’ qui entourent la phrase délimitent la phrase. Ils ne délimitent pas la chaîne.


 
 
les deux n'ont pas tout à fait la même utilité
 
 
le mode booléen par exemple n'est pas soumis au seuil de 50% ;)


certes, mais utiliser le mode booleens ( saufe erreur de ma part )implique d'utiliser les operateurs, sinon, on retombe en mode normal ( seuil compris )

n°1577253
anapajari
s/travail/glanding on hfr/gs;
Posté le 20-06-2007 à 12:58:51  profilanswer
 

nycius a écrit :

Parce que le LIKE fonctionnera pour "Aspire 9422" mais pas "9422 Aspire"


Ok donc c'est normal que "Aspire 9422" fonctionne pas comme tu le voudrais alors.
Il faut que tu fasses against(' +"Aspire 9422" +"9422 Aspire" ) mais ça va pas te plaire non car tu vas dire que tu peux pas couper ta chaine :o

n°1577288
nycius
Ich liebe dich !
Posté le 20-06-2007 à 14:16:53  profilanswer
 

si je fais against('Aspire 9422') ca marche nikel, j'ai les deux aussi bien Aspire 9422 que 9422 aspire, seulement j'ai aussi aspire 5130, etc

n°1577299
ajnag
where no man has gone before
Posté le 20-06-2007 à 14:41:33  profilanswer
 

Code :
  1. SELECT * FROM table WHERE name like '%Aspire 9422%' OR name like '%9422 Aspire%'


 
ça irai pas mieux ça ?  :??:
 
 
P.S. je connais pas against  [:ddr555]

Message cité 1 fois
Message édité par ajnag le 20-06-2007 à 14:42:13
n°1577305
anapajari
s/travail/glanding on hfr/gs;
Posté le 20-06-2007 à 14:51:45  profilanswer
 

nycius a écrit :

si je fais against('Aspire 9422') ca marche nikel, j'ai les deux aussi bien Aspire 9422 que 9422 aspire, seulement j'ai aussi aspire 5130, etc


C'est toujours normal [:w3c compliant]
ton against('Aspire 9422') sans boolean equivaut à un ('+Aspire +9422' in boolean) ... Ce que t'expliquais Flo850.
Et donc oui ce remonte ce qu'il faut mais ça remonte aussi des trucs en trop [:spamafote]
 

ajnag a écrit :

Code :
  1. SELECT * FROM table WHERE name like '%Aspire 9422%' OR name like '%9422 Aspire%'

ça irai pas mieux ça ?  :??:[:ddr555]


non parce qu'il peut pas "triturer" sa chaine (enfin si j'ai bien compris)

n°1577326
ajnag
where no man has gone before
Posté le 20-06-2007 à 16:03:43  profilanswer
 

ah ok
 
en plus me suis trompé, c'etait pas OR mais AND qu'il fallait :D

n°1577327
nycius
Ich liebe dich !
Posté le 20-06-2007 à 16:14:16  profilanswer
 

anapajari a écrit :

C'est toujours normal [:w3c compliant]
ton against('Aspire 9422') sans boolean equivaut à un ('+Aspire +9422' in boolean) ... Ce que t'expliquais Flo850.
Et donc oui ce remonte ce qu'il faut mais ça remonte aussi des trucs en trop [:spamafote]
 
 
non parce qu'il peut pas "triturer" sa chaine (enfin si j'ai bien compris)


 
Exact, c'est pour ca que j'ai fait au depart  

Code :
  1. SELECT * FROM table WHERE MATCH (name) AGAINST ('"Aspire 9422"' IN BOOLEAN MODE)


 
Qui normalement devrait me sortir que les deux mots ensemble

n°1577359
anapajari
s/travail/glanding on hfr/gs;
Posté le 20-06-2007 à 17:24:08  profilanswer
 

euh non  toujours pas [:w3c compliant], t'es sur que tu veux pas lire la doc?

Citation :

Recherche les lignes qui contiennent exactement la phrase ``deux mots'' (par exemple, les lignes qui contiennent ``deux mots d'amour'' mais pas ``le motsdeux'')


Message édité par anapajari le 20-06-2007 à 17:24:16
n°1643495
nycius
Ich liebe dich !
Posté le 15-11-2007 à 16:45:08  profilanswer
 

Hello,
 
Dites je reviens car j'ai un soucis, j'utilise ca :

Code :
  1. SELECT A1.id,A1.titre,A1.code_soundex,A2.description FROM prods A1 INNER JOIN prods_det A2 ON A1.id = A2.id_produit WHERE MATCH (A1.titre) AGAINST('+nokia n93' IN BOOLEAN MODE)


 
Seulement ca me resort rien.
Si derriere je fais :

Code :
  1. SELECT A1.id,A1.titre,A1.code_soundex,A2.description FROM prods A1 INNER JOIN prods_det A2 ON A1.id = A2.id_produit WHERE ucase(A1.titre) LIKE '%nokia%' AND ucase(A1.titre) LIKE '%n93%'


 
ca passe bien.
 
J'ai fait quelque chose de mal ?  :??:


Message édité par nycius le 15-11-2007 à 16:45:32
n°1643518
anapajari
s/travail/glanding on hfr/gs;
Posté le 15-11-2007 à 17:24:46  profilanswer
 

je parie sur titre en UTF8_BIN :o

n°1643550
nycius
Ich liebe dich !
Posté le 15-11-2007 à 18:03:13  profilanswer
 

anapajari a écrit :

je parie sur titre en UTF8_BIN :o


 
nop

n°1643752
anapajari
s/travail/glanding on hfr/gs;
Posté le 16-11-2007 à 10:04:00  profilanswer
 

bizarre à la lecture des deux requêtes tout me laisse à penser que c'est une histoire de "case sensitive" ton problème.
 
Normalement, match against n'est pas sensible à la casse sauf dans le cas ou le champs qu'il explore a du contenu considéré comme binaire (par exemple encodage utf8_bin).
Mais on peut aussi rencontrer le problème si on match sur deux champs de type différents (  str et int), mySQL considère alors leur agglomérat comme binaire.
 
Mais du coup si c'est pas ça je sais pas :o

n°1644572
nycius
Ich liebe dich !
Posté le 17-11-2007 à 23:14:47  profilanswer
 

Non tout est ok du coté del'encodage, je comprends pas non plus :(

mood
Publicité
Posté le   profilanswer
 


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

  [MySql] Fulltext qui foire

 

Sujets relatifs
Problème d'insert into en masse MySql / Sql[mysql] NOT EXISTS
[MySQL] clause WHERE avec ASProbléme avec script pour modifier une table Mysql
Insertion partielle avec LOAD DATA INFILE (MySQL)Génération de fichier xml à partir de php mysql. [Résolu]
[MySQL] Procédure stockée : parcourir les résultats d'un SELECT ?[Resolu] [php/mySQL JS?] Case a cocher evenementielle.
?? Requette sql pour connaitre le nombre d'entrée dans une table mysql[C#] Problème requête MySql
Plus de sujets relatifs à : [MySql] Fulltext qui foire


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