Posted: 16.11.2005 15:39 Post subject: MySQL, phpBB, keywords, speed
Pozdav,
Primjetio sam da npr. phpBB radi keywords list svakog posta i kao takvog ga snima u bazu. E sad mene zanima na koji nacin to radi, s obzirom da po svojoj prilica to radi dobro i sto mi je najvaznije dovoljno brzo, s obzirom da razvijam nesto slicno i dobro bi mi doslo nesto vise tehnickih detalja.
Objasnjenje, hintovi, linkovi na tu temu, u principu najvise mi trebaju hintovi vezani uz brzinu php-a i mysql-a tipa nemoj koristit SELECT * FROM .. nego SELECT DISTINCT keyword FROM ... itd...
Joined: 25 Aug 2003 Posts: 1842 Location: Zagreb, Hrvatska
Posted: 16.11.2005 18:43 Post subject:
radilo je otprilike ovako: dvije tablice; jedna je kao rijecnik, druga je zapis gdje je rijec spomenuta.
dakle, spremanje doslovno svake riječi iz posta u bazu, dodijeli joj se id ako vec ne postoji i flaga ju se da li je common ili nije (za sto postoji jednostavna lista common rijeci i sinonima u dva posebna .txt filea)...
prilikom unosa posta u bazu, prica se ponavlja za svaku rijec, i zapise se post_id u kojem se upravo pojavila...
pretrazivanje se u tom slucaju zapravo radi po dictionary tablici, a ne po tablici postova koja je ogromna i ima hrpu sadrzaja koji nije bitan i zato je brzo :)
baci pogled na includes/functions_search.php i includes/functions_post.php u phpBB soruceu pa ces vidjeti i sam kako radi... oni jos imaju i pricu sa multibyte charsetima rijesenu tako da u tom slucaju standardno pretrazuju postove kompletne, ali to je sporo kad forum naraste
hmm pa sto ako npr. ja trazim "pas gromit" ... on ce trazit posbeno pas i posbeno gromit, jel tak?(pa mi nadje npr. post u kojem se konkretno spominje "macor gromit" i "pas garfild") pa sta nije to malo glupo...
_________________ Activate interlock! Dynotherms connected! Infracells up! Mega thrusters are go! LET'S GO VOLTRON FORCE!
hmm pa sto ako npr. ja trazim "pas gromit" ... on ce trazit posbeno pas i posbeno gromit, jel tak?(pa mi nadje npr. post u kojem se konkretno spominje "macor gromit" i "pas garfild")
To su ti dvije razlicite operacije, zato postoji u searchu "trazi sve rijeci" "trazi bilo koju rijec" (ili tako nesto )
Na tvom primjeru "pas gromit" ako trazi kao "pas" AND "gromit" onda ce ti naci samo post koji sadrzi oba pojma, a npr "pas" OR "gromit" ce pronaci post koji sadrzi barem jedan od pojmova.
Na tvom primjeru "pas gromit" ako trazi kao "pas" AND "gromit" onda ce ti naci samo post koji sadrzi oba pojma, a npr "pas" OR "gromit" ce pronaci post koji sadrzi barem jedan od pojmova.
Zapravo nisam mislio na to....
npr. ako u googleu trazis gospodina 'tedius tedo' on ti moze nac npr. stranicu gdje se spominje 'tedius bruno' i 'marko tedo' ali zapravo to nije ono sto ti zelis...jer ti zelis osobu 'tedius tedo'....
onda bi u google-u jednostavno stavio "tedius tedo" pa bi dobio ono sto zelis...no dobro to svi vjerovatno znaju ...
uglavnom na taj nacin na koji sprema rijeci phpbb zapravo nezna koja se rijec nalazi pored koje... jel tako?
_________________ Activate interlock! Dynotherms connected! Infracells up! Mega thrusters are go! LET'S GO VOLTRON FORCE!
Da, tocno, to phpBB ne radi, no to u njemu nije niti bitno jer npr ako mu na mi3 zadas "phpBB mysql" izbacit ce ti samo 253 rezultata bez obzira na navodnike dok ce google reci... samo malo
phpBB mysql = about 2,520,000
"phpBB mysql" = about 16,600
Nije problem preletiti preko 253 rezultata, dok vec 16600 predstavlja problem, a kamoli 2,5*10E6
No mene jos uvijek najvise zanima brzina svega toga, kao npr google za 2,5mil kaze 0.06sec a za 16600 prvo 0.2 a zatim 0.03 sec dakle ocito je da cachira barem cesto trazene stranice / rezultate pretraga.
You cannot post new topics in this forum You cannot reply to topics in this forum You cannot edit your posts in this forum You cannot delete your posts in this forum You cannot vote in polls in this forum