Fulltext qui foire [MySql] - SQL/NoSQL - Programmation
Marsh Posté le 20-06-2007 à 11:59:12
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.
Marsh Posté le 20-06-2007 à 12:00:03
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
Marsh Posté le 20-06-2007 à 12:03:58
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 :
|
?
Marsh Posté le 20-06-2007 à 12:08:16
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
Marsh Posté le 20-06-2007 à 12:08:47
Citation : # '"deux mots"' |
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%
Marsh Posté le 20-06-2007 à 12:09:41
il est présent 1 seule fois sur 1800
Je veux sortir uniquement Aspire 9422 en complet, pas 9422 tout seul ou Aspire
Marsh Posté le 20-06-2007 à 12:10:06
anapajari a écrit :
|
Ca a été fait, ca ne fonctionne pas
Marsh Posté le 20-06-2007 à 12:11:06
nycius a écrit : il est présent 1 seule fois sur 1800 |
Alors pourquoi utiliser un match/against plutot qu'un like
Marsh Posté le 20-06-2007 à 12:12:49
anapajari a écrit : Alors pourquoi utiliser un match/against plutot qu'un like |
Parce que le LIKE fonctionnera pour "Aspire 9422" mais pas "9422 Aspire"
Marsh Posté le 20-06-2007 à 12:16:03
anapajari a écrit :
|
certes, mais utiliser le mode booleens ( saufe erreur de ma part )implique d'utiliser les operateurs, sinon, on retombe en mode normal ( seuil compris )
Marsh Posté le 20-06-2007 à 12:58:51
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
Marsh Posté le 20-06-2007 à 14:16:53
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
Marsh Posté le 20-06-2007 à 14:41:33
Code :
|
ça irai pas mieux ça ?
P.S. je connais pas against
Marsh Posté le 20-06-2007 à 14:51:45
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
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
ajnag a écrit :
ça irai pas mieux ça ? |
non parce qu'il peut pas "triturer" sa chaine (enfin si j'ai bien compris)
Marsh Posté le 20-06-2007 à 16:03:43
ah ok
en plus me suis trompé, c'etait pas OR mais AND qu'il fallait
Marsh Posté le 20-06-2007 à 16:14:16
anapajari a écrit : C'est toujours normal |
Exact, c'est pour ca que j'ai fait au depart
Code :
|
Qui normalement devrait me sortir que les deux mots ensemble
Marsh Posté le 20-06-2007 à 17:24:08
euh non toujours pas , 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'') |
Marsh Posté le 15-11-2007 à 16:45:08
Hello,
Dites je reviens car j'ai un soucis, j'utilise ca :
Code :
|
Seulement ca me resort rien.
Si derriere je fais :
Code :
|
ca passe bien.
J'ai fait quelque chose de mal ?
Marsh Posté le 16-11-2007 à 10:04:00
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
Marsh Posté le 17-11-2007 à 23:14:47
Non tout est ok du coté del'encodage, je comprends pas non plus
Marsh Posté le 20-06-2007 à 11:54:37
Hello
Je fais une recherche comme cela
Je veux qu'il me sorte donc uniquement les lignes contenant "Aspire 9422" dans n'importe quel ordre.
Ca me resort rien du tout