‘Ljetni’ MySQL FullText searching

Racunalo.com foto

A i evo i mog najsviježijeg iskustva iz e-poslovanja.
Konačno! Nakon dva dana, ili preciznije 4 sata rada, riješio sam problem. Sad na kraju bitke, čudim se zašto mi je toliko vremena trebalo. Uostalom, problem mi je riješio Google, kao i sve probleme do sad. Riješio je to Google za par minuta. Pa na što sam to potrošio tolike sate? Pokušat ću se prisjetiti. To da je strašno vruće mi nije isprika jer koristim klimu.


Idemo redom.


Najprije problem: Ne radi mi MySQL FullText searching. Ne radi opcija any-words, a odlično radi opcija all-words. Opcija any-words, koja mi ne radi:


SELECT jedinica_id, ime, CONCAT(LEFT(opis,”4″),’…’) AS opis, slika_1
FROM jedinica
WHERE MATCH (ime,opis)
AGAINST (“opis”);


Opcija all-words koja mi radi:


SELECT jedinica_id, ime, CONCAT(LEFT(opis,”4″),’…’) AS opis, slika_1
FROM jedinica
WHERE MATCH (ime,opis)
AGAINST (“opis” IN BOOLEAN MODE)
ORDER BY MATCH (ime,opis)
AGAINST (“opis” IN BOOLEAN MODE);


Aktivirao sam funkciju FullText search nad tablicom ‘jedinica’ pomoću ove SQL naredbe:


ALTER TABLE jedinica ADD FULLTEXT ImeOpisFullText(ime,opis);


Preskočimo što sam sve pokušavao. Idemo na riješenje. U Google sam napisao samo ‘full-text’ i odabrao peti link na relevantnoj listi. Pogled mi je dojurio do Restriction i odmah sam ugledao svoj problem:


By default, if a search term appears in more than 50% of the rows then MySQL will not return any results.


U mojoj tablici ‘jedinica’ imam 30 redaka i u svakom retku su kopirani isti podaci, osim ID. Pošto pretražujem stupce ‘ime’ i ‘opis’, koji imaju iste podatke, opcija all-words mi je izbacivala svih 30 redaka, a opcija any-words mi je javljala da podataka nema, jer ih je bilo 100%.


Dodao sam još jedan redak u tablici, upisao druge podatke i sve je radilo OK.


Na nekom od foruma mogu pomoći drugima ako ovu spasonosnu rečenicu:


By default, if a search term appears in more than 50% of the rows then MySQL will not return any results.


proširim s: ovo ograničenje vrijedi samo za FullText search opciju any-words.


Napomena:


Ovo ograničenje:


MySQL requires that you have at least three rows of data in your result set before it will return any results.


nije pogađalo moju verziju MySQL-a (4.1.1.4).


Ivica Kartelo
Prvi online učitelj u Hrvatskoj

Oglas
Oglas
Pretplatite se na BESPLATNE
Tjedni pregled najzanimljivijih tehnoloških informacija
Poveznica se otvara u novom prozoru
Sigurnosna provjera: Upišite rezultat  7+1=

KOMENTARI


Neprimjerene komentare, poveznice, reklamiranje/promoviranje i komentare koji tematski nisu vezani uz vijest odmah ćemo ukloniti.