[ manix @ 20.07.2009. 07:57 ] @
pozz
ima polje u bazi sa naslovima vesti

tabela vesti
polje naslov
———————————————————————————————
Poskupljenje hleba za 30% !!!
Cena benzina duplirana u odnosu na proslu godinu!
Kolika je cena istine??
———————————————————————————————

u polje za pretragu je recimo uneto sledece : cena hleba
Potrebno mi je da izvrsim pretragu za svaku rec posebno, dakle u ovom slucaju bi trebalo da se prikazu sva tri zapisa iz baze

pokusao sam na sledeci nacin(podelim trazeni tekst na reci i napravim upit)
SELECT * FROM vesti WHERE naslov LIKE %cena% OR naslov LIKE %hleba%
sve radi kada je jedna rec u pitanju, cim ukucam dve ili vise ne dobija inakav rezultat iako su sve reci sadrzane(po na osob) u nekom od zapisa...

ako moze pomoc :)
Hvala!
[ bogdan.kecman @ 20.07.2009. 08:50 ] @
ako je tabela MyISAM onda mozes da radis full text search:

http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html

ako nije onda si nadrljao
[ manix @ 20.07.2009. 09:47 ] @
Citat:
bogdan.kecman: ako je tabela MyISAM onda mozes da radis full text search:

http://dev.mysql.com/doc/refman/5.1/en/fulltext-search.html

ako nije onda si nadrljao


hmm... kako da znam da li je

server je
# Server version: 5.0.81-community
# Protocol version: 10
# Server: Localhost via UNIX socket

i moze li mala pomoc u vezu fulltext, malo mi je ovo zurno :) ako ne, onda se moram baciti na proucavanje :)
[ bogdan.kecman @ 20.07.2009. 09:53 ] @
sto se engine-a tice

Code:

SHOW CREATE TABLE vesti\G


i videces na kraju "engine=..." tu ce da pise MyISAM ili InnoDB ili ..

isto tako mozes i sa

Code:

show table status like '%vesti%';


pa vidis u koloni engine sta pise ..

mozes da promenis (ako ti je dozvoljeno) engine za tu tabelu u myisam (obrati paznju onda vise nije transaction safe, crash safe, ne rade strani kljucevi, ne rade constraintsi ... ali - radi fulltext i nesto je brze od innodb-a) sa:

Code:

ALTER TABLE vesti ENGINE=myisam;


[ bogdan.kecman @ 20.07.2009. 10:08 ] @
sto se tice full text search-a .. moras na kolonu/kolone koje pretrazujes da dodas fulltextsearch index ...

evo ti primer, posto ne znam kako tvoja tabela izgleda evo ti neka "bezvezna":

napravis tabelu i napuinis glupostima
Code:

mysql> create table t1 (id int auto_increment primary key, vest text) engine=myisam;
Query OK, 0 rows affected (0.05 sec)

mysql> insert into t1 (vest) values ('evo ti primer, posto ne znam kako tvoja tabela izgleda evo ti neka');
Query OK, 1 row affected (0.00 sec)

mysql> insert into t1 (vest) values ('mozes da promenis (ako ti je dozvoljeno) engine za tu tabelu u myisam (obrati paznju onda vise nije transaction safe, crash safe, ne rade strani kljucevi, ne rade constraintsi ... ali - radi fulltext i nesto');
Query OK, 1 row affected (0.00 sec)



dodas full text index na polje vest

Code:

mysql> alter table t1 ADD FULLTEXT (vest);
Query OK, 9 rows affected (0.05 sec)
Records: 9  Duplicates: 0  Warnings: 0



i sad nesto pitas:
Code:

SELECT *, MATCH (vest) AGAINST ('transaction dozvoljeno') AS score FROM t1 WHERE MATCH (vest) AGAINST ('transaction dozvoljeno');


[ bogdan.kecman @ 20.07.2009. 10:13 ] @
obrati paznju da se reci ispod 4 slova ne indexiraju i da se "stop words" ne indexiraju ... default stop words mozes da vidis ovde:
http://dev.mysql.com/doc/refman/5.1/en/fulltext-stopwords.html
[ manix @ 20.07.2009. 15:36 ] @
WOW :) hvala puno!!!

Sasvim je dovoljno ovo,kljucne stvari na koje treba obratiti paznju.
U medjuvremenu sam proverio i u pitanju je MyISAM :) tako da idem da pravim.

Jos jedno hvala puno na detaljnom odgovoru i pomoci!

[Ovu poruku je menjao manix dana 21.07.2009. u 02:15 GMT+1]