Am o roblema la cautarea cu fulltext.
Am un tabel aro_at cu un camp plz care e text, FULLTEXT si totusi daca dau :
select * from aro_at where MATCH(plz) AGAINST('p1')
nu merge.
Ce e in AGAINST, adica in cazul meu p1, ar trebui sa caute daca e in vreo inregistrare din campul plz sau daca e vreo inregistrare din camp?
Oricum nu merge, am incercat ambele cazuri.Poate cineva sa-mi dea indicatii?
Mersi
FULLTEXT search
Moderatori: Zamolxe, Moderatori
Nu prea stapanesc MATCH...AGAINST, dar nu cumva e justificata folosirea ei numai daca la MATCH foloseshti mai multe coloane nu doar una??
Alta chestie: cica merge doar de la versiunea de mysql 3.23.23 in sus; ai o versiune superioara??
Spune-ne ce vrei sa faci shi poate are cineva o solutzie, poate nu ai nevoie decat de un LIKE in loc de MATCH...AGAINST
Alta chestie: cica merge doar de la versiunea de mysql 3.23.23 in sus; ai o versiune superioara??
Spune-ne ce vrei sa faci shi poate are cineva o solutzie, poate nu ai nevoie decat de un LIKE in loc de MATCH...AGAINST
Shi mie mi se pare ciudat.
Am respectat toate conditziile din documentatie in ceea ce priveste indexarea coloanelor dar am observat ca daca am un shir "ana are mere" (de exemplu) shi folosesc clauza AGAINST ("mere") o totul ok; daca folosesc AGAINST ("ana") nu intoarce nimic.
Asha se intampla de fiecare data cand solicit primul cuvant din shir (cred ca asha se intampla shi in cazult tau, p1 era probabil cuvant unic, deci primul).
Poate este cineva care ne explica chestia asta.
Poate asha trebuie sa functioneze sau e un BUG.
Ashteptam un ajutor!!! - Nu am nevoie in proiectele mele de clauza MATCH...AGAINST dar e bine de shtiut pentru viitor.
Am respectat toate conditziile din documentatie in ceea ce priveste indexarea coloanelor dar am observat ca daca am un shir "ana are mere" (de exemplu) shi folosesc clauza AGAINST ("mere") o totul ok; daca folosesc AGAINST ("ana") nu intoarce nimic.
Asha se intampla de fiecare data cand solicit primul cuvant din shir (cred ca asha se intampla shi in cazult tau, p1 era probabil cuvant unic, deci primul).
Poate este cineva care ne explica chestia asta.
Poate asha trebuie sa functioneze sau e un BUG.
Ashteptam un ajutor!!! - Nu am nevoie in proiectele mele de clauza MATCH...AGAINST dar e bine de shtiut pentru viitor.
-
mikitu
- PHPRomania Supporter
- Mesaje: 9
- Membru din: Lun Feb 24, 2003 11:00 am
- Localitate: bucuresti
- Contact:
incearca sa folosesti asta:
AGAINST ('+ana' IN BOOLEAN MODE);
pentru mai multe detalii:
http://www.mysql.com/doc/en/Fulltext_Search.html
AGAINST ('+ana' IN BOOLEAN MODE);
pentru mai multe detalii:
http://www.mysql.com/doc/en/Fulltext_Search.html
Salut dora,
Problema ta cred ca e la tabela mysql
De exemplu daca ai cauta dupa title si description care sa spunem is varchar atunci ar trebui sa ai definit la crearea tabelei:
title varchar(255) default '',
description varchar(255) default '',
fulltext (title,description),
Daca nu pui fulltext nu merge
Salut si spor la munca
Problema ta cred ca e la tabela mysql
De exemplu daca ai cauta dupa title si description care sa spunem is varchar atunci ar trebui sa ai definit la crearea tabelei:
title varchar(255) default '',
description varchar(255) default '',
fulltext (title,description),
Daca nu pui fulltext nu merge
Salut si spor la munca
iugin,
http://www.iugin.com
http://www.iugin.com
Nu cred ca asta e problema.
M-am uitat mai bine pe documentatia MySQL shi am descoperit urmatoarele:
1. Sunt IGNORATE cuvintele cu mai putin de 3 caractere (inclusiv)
2. Deoarece MATCH...AGAINST calculeaza un scor, cu cat cuvantul apare in mai multe randuri(inregistrari) scorul este mai mic, astfel ca in cazul in care el se afla pe mai mult de jumatate din randuri scorul tinde la 0, deci este ignorat
3. Am testat cuvinte de 4 litere. Intr-o baza de date cu 12 inregistrari mi-a fost ignorat. Intr-o baza de date cu aprox. 48000 inregistrari a dat rezultate.
Ceea ce am scris mai inainte cu ignorarea primului cuvant cade, nu e bug, asha lucreaza.
In concluzie procedura nu e recomandata decat in cazul unor "motoare de cautare", sa zicem, cand faci o cautare shi afishezi rezultatele in ordinea scorului (calculat in functie de numarul de aparitzii in inregistrare shi altele).
Dezvoltatorii MYSQL atentzioneaza ca folosirea MATCH...AGAINST poate intoarce rezultate bizare.
M-am uitat mai bine pe documentatia MySQL shi am descoperit urmatoarele:
1. Sunt IGNORATE cuvintele cu mai putin de 3 caractere (inclusiv)
2. Deoarece MATCH...AGAINST calculeaza un scor, cu cat cuvantul apare in mai multe randuri(inregistrari) scorul este mai mic, astfel ca in cazul in care el se afla pe mai mult de jumatate din randuri scorul tinde la 0, deci este ignorat
3. Am testat cuvinte de 4 litere. Intr-o baza de date cu 12 inregistrari mi-a fost ignorat. Intr-o baza de date cu aprox. 48000 inregistrari a dat rezultate.
Ceea ce am scris mai inainte cu ignorarea primului cuvant cade, nu e bug, asha lucreaza.
In concluzie procedura nu e recomandata decat in cazul unor "motoare de cautare", sa zicem, cand faci o cautare shi afishezi rezultatele in ordinea scorului (calculat in functie de numarul de aparitzii in inregistrare shi altele).
Dezvoltatorii MYSQL atentzioneaza ca folosirea MATCH...AGAINST poate intoarce rezultate bizare.
Bineinteles! Indexarea cu fulltext e neaparat necesara. Nici nu incape discutzie. Dar intr-un mesaj mai sus am spus ca deshi am respectat toate conditziile in ceea ce priveshte indexarea mi se parea suspicios.
Am citit mai bine shi am ajuns la concluzia de mai sus.
Referitor la folosirea AGAINST ('+ana' IN BOOLEAN MODE) daca imi amintesc bine e valabil de la versiunea Mysql 4 in sus. Nu mai shtiu bine dar parca asha spunea acolo.
Am citit mai bine shi am ajuns la concluzia de mai sus.
Referitor la folosirea AGAINST ('+ana' IN BOOLEAN MODE) daca imi amintesc bine e valabil de la versiunea Mysql 4 in sus. Nu mai shtiu bine dar parca asha spunea acolo.
Cine este conectat
Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 10 vizitatori