DevProTalk

Forumi IT profesionalaca
web development, web design, e-business, SEO


Idite nazad   DevProTalk > Web development i web aplikacije > PHP
Želite da se reklamirate ekskluzivno na ovoj poziciji? Javite se

PHP PHP aplikacije, Smarty, PEAR

Odgovori
 
Alati teme Način prikaza
Staro 07. 05. 2009.   #1
LiquidBrain
Milan Cvejic
Wrote a book
 
Avatar LiquidBrain
 
Datum učlanjenja: 05.09.2006
Lokacija: Beograd
Poruke: 1.241
Hvala: 32
73 "Hvala" u 56 poruka
LiquidBrain će postati "faca" uskoro
Pošaljite poruku preko Yahoo za LiquidBrain
Default database pretraga (and pa posle or)

Pozz,
razmisljam kako da napravim funkcionalnost pretrage tako da prvo prikazuje rezultate po "AND" kritrtijumu a posle po "OR"?

dakle ako trazim "predsednik srbije" da mi prvo izbaci rezultate gde ima obe reci a tek posle rezultate sa nekom od njih...

Jel ima neko neki bolji predlog od toga da pravim dva upita gde je jedan za "and" a drugi za "or"?

Hvala!
__________________
http://weevify.com
LiquidBrain je offline   Odgovorite uz citat
Staro 07. 05. 2009.   #2
Blood
Boban Karišik
Expert
 
Avatar Blood
 
Datum učlanjenja: 05.11.2005
Lokacija: Beograd
Poruke: 556
Hvala: 36
186 "Hvala" u 21 poruka
Blood is on a distinguished roadBlood is on a distinguished road
Pošaljite poruku preko Skype™ za Blood
Default

Ja sam to jednom prilikom odradio ovako:
(da se odma ogradim, nije bila nesto ogromna baza)

Znaci povuces podatke sa OR i onda preko preg_match-a za dobijene rezultate odradis pretragu za svaku rec. Rezultate stavis u novi niz, a za index niza stavis broj koliko reci ima match. Recimo:

imas 3 rekorda u bazi:
- predsednik je uspeo
- predsednik srbije je nesto uradio
- pocetak nove srbije

Kad prodje kroz match, dobio bi ovakav niz:
$res[2][] => "predsednik srbije je nesto uradio"
$res[1][] => "predsednik je uspeo"
$res[1][] => "pocetak nove srbije"

Nadam se da ti ovo moze pomoci...
__________________
Ako već nisi Anđeo, bar budi čovek...

Poslednja izmena od Blood : 07. 05. 2009. u 01:53.
Blood je offline   Odgovorite uz citat
Staro 07. 05. 2009.   #3
razno
Miljenko Rebernišak
Qualified
 
Avatar razno
 
Datum učlanjenja: 05.03.2009
Lokacija: Jagodina-Beograd
Poruke: 191
Hvala: 4
25 "Hvala" u 22 poruka
razno is on a distinguished road
Default

Mogao bi da koristis union all da spojis ta dva upita u jedan posto pretpostavljam da je selektovani broj kolona isti.Ovo ce ti dati dvaput isti zapis.Mozes da uradis i grupisanje pa da izbacis duplikate. Ne znam kako ce uticati na performanse,ali testiraj ako se odlucis za tako nesto.

Poslednja izmena od razno : 07. 05. 2009. u 01:49.
razno je offline   Odgovorite uz citat
Staro 07. 05. 2009.   #4
LiquidBrain
Milan Cvejic
Wrote a book
 
Avatar LiquidBrain
 
Datum učlanjenja: 05.09.2006
Lokacija: Beograd
Poruke: 1.241
Hvala: 32
73 "Hvala" u 56 poruka
LiquidBrain će postati "faca" uskoro
Pošaljite poruku preko Yahoo za LiquidBrain
Default

uf... konkretno se radi o bazi koja ima preko 2 miliona rekorda...

@blood, interesantno resenje, ali na zalost nece bash da moze sa ovom kolicinom podataka...

@razno, union i subqueriji na mysql-u nisu bash dobri sto se tice performansi...

Ja sam nesto razmisljao, kao varijaciju na blood-ovu ideju tako da izvucem sve sa "OR", a da zatim prilikom obrade samog reda u petlji stavim testiranje da li se svi pojmovi nalaze u samom stringu, pa ako da onda da ih stavim u jedan niz, a ako ne onda da ih stavim u drugi...

To mi izgleda kao najjednostavnije resenje, i verovatno najefikasnije, posto bi duplo drndanje po bazi bio poprilican problem, a svakako mi je neophodno da to sortiram...

Jedina mana u celom ovom slucaju je to sto moze da bude proizvoljan broj reci, sto bi samim tim vodilo do broja nizova koji je ekvivalentan broju reci u pretrazi... uf... jel neko ima google source? :P

Hvala svima, necu ovo do sutra sigurno da radim, pa ako neko ima bio bih zahvalan, i platio bih pivo na okupljanju sledece nedelje

Heheh, mito i korupcija
__________________
http://weevify.com
LiquidBrain je offline   Odgovorite uz citat
Staro 07. 05. 2009.   #5
nixa
Nikola Denić
Sir Write-a-Lot
 
Avatar nixa
 
Datum učlanjenja: 18.05.2005
Lokacija: Beograd
Poruke: 3.694
Hvala: 160
458 "Hvala" u 164 poruka
nixa ima spektakularnu aurunixa ima spektakularnu aurunixa ima spektakularnu aurunixa ima spektakularnu aurunixa ima spektakularnu auru
Pošaljite poruku preko Skype™ za nixa
Default

Lucene ?
__________________
Do not ask yourself what the world needs. Ask yourself what makes you come alive, and then go do that. Because what the world needs is people who have come alive
nixa je offline   Odgovorite uz citat
Staro 07. 05. 2009.   #6
nn.nn
nobody
Expert
 
Avatar nn.nn
 
Datum učlanjenja: 19.04.2007
Poruke: 537
Hvala: 14
705 "Hvala" u 106 poruka
nn.nn će postati "faca" uskoronn.nn će postati "faca" uskoronn.nn će postati "faca" uskoronn.nn će postati "faca" uskoronn.nn će postati "faca" uskoronn.nn će postati "faca" uskoronn.nn će postati "faca" uskoro
Default

Sphinx ?
nn.nn je offline   Odgovorite uz citat
Staro 07. 05. 2009.   #7
Vladimir Rodic
Webeloper
Professional
 
Avatar Vladimir Rodic
 
Datum učlanjenja: 19.10.2006
Lokacija: Novi Sad
Poruke: 348
Hvala: 136
33 "Hvala" u 24 poruka
Vladimir Rodic is on a distinguished road
Pošaljite poruku preko Skype™ za Vladimir Rodic
Default

Citat:
Originalno napisao LiquidBrain Pogledajte poruku
i platio bih pivo na okupljanju sledece nedelje
__________________
Before you criticize someone, walk a mile in their shoes.
By the time they get angry you're a mile away and you've got their shoes!
Vladimir Rodic je offline   Odgovorite uz citat
Staro 07. 05. 2009.   #8
jablan
VD IT Direktora
Invented the damn thing
 
Avatar jablan
 
Datum učlanjenja: 08.06.2005
Lokacija: Beograd
Poruke: 2.118
Hvala: 503
1.307 "Hvala" u 282 poruka
jablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamenjablan je pravi dragi kamen
Default

Malo je kontraintuitivno da se korisniku u rezultatima pretrage prikazuju mešani rezultati AND i OR, jer on kad kuca obično ima predstavu da se pretraga radi ili po jednom ili po drugom mehanizmu.

Moj predlog je da svakako radiš dva upita (na kraju krajeva, koliko često korisnici pretražuju), prvo AND, pa
1) Ako nema rezultata za AND, odmah uradiš OR i prikažeš korisniku rezultate OR, sa napomenom da je urađen fallback.
2) Ako rezultata za AND ima za manje od jedne strane, vratiš ih i ponudiš korisniku link kojim može da uradi OR
3) Ako AND rezultata ima za više od jedne strane, uopšte ne pominješ OR pretragu.
jablan je offline   Odgovorite uz citat
3 članova zahvaljuje jablan za poruku:
Staro 07. 05. 2009.   #9
LiquidBrain
Milan Cvejic
Wrote a book
 
Avatar LiquidBrain
 
Datum učlanjenja: 05.09.2006
Lokacija: Beograd
Poruke: 1.241
Hvala: 32
73 "Hvala" u 56 poruka
LiquidBrain će postati "faca" uskoro
Pošaljite poruku preko Yahoo za LiquidBrain
Default

@jablan,
eh, kada bih se ja pitao, to bi bilo tako... ali s'obzirom da klijent to trazi bash tako onda nemam sta sem da napravim kako zeli...

Borba sa vetrenjacama nikad nije uradila plodom...
__________________
http://weevify.com

Poslednja izmena od LiquidBrain : 07. 05. 2009. u 15:26.
LiquidBrain je offline   Odgovorite uz citat
Staro 07. 05. 2009.   #10
ivanhoe
Ivan Dilber
Sir Write-a-Lot
 
Avatar ivanhoe
 
Datum učlanjenja: 18.10.2005
Lokacija: Bgd
Poruke: 5.320
Hvala: 104
2.344 "Hvala" u 583 poruka
ivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svimaivanhoe je ime poznato svima
Pošaljite poruku preko Skype™ za ivanhoe
Default

gresis oko uniona, ponekad je UNION ALL brze od OR, zavisi od indexa. Ja sam imao slucaj sa fultext searchom po naslovi i textu clanka, koji je jos trebalo sortirati po relevantnosti, i sa OR nikako nije hteo da koristi indexe kako treba, pa je UNION ALL bio znacajno brzi..

Posto pretpostavljam da ce i ti koristi fulltext search, ako koristis binary opciju onda ti je relevance prakticno broj reci koje se matchuju. Mogao bi sa UNION da uzimas rezultate, pa da ih sortiras po relevance i tako bi prvo dobio one koji matchuju sve reci, pa sve sem jedne, itd...
__________________
Leadership is the art of getting people to want to do what you know must be done.

Poslednja izmena od ivanhoe : 07. 05. 2009. u 19:33.
ivanhoe je offline   Odgovorite uz citat
Odgovori


Alati teme
Način prikaza

Pravila pisanja
Možete ne započinjati nove teme
Možete ne slati odgovore
Možete ne slati priloge
Možete ne izmeniti svoje poruke
vB kôd je Uključen
Smajliji su Uključen
[IMG] kod je Uključen
HTML kôd je Isključen
Pogledajte forum

Slične teme
Tema Početna poruka teme Forum Odgovori Poslednja poruka
MySQL Database Compare - compare local and remote database bluesman Web aplikacije, web servisi i software 3 26. 02. 2009. 16:34
Domain owner? Pretraga glaspodrinja.com Marketing i SEO 1 16. 05. 2008. 11:02
Pretraga problem | file_get_contents flash_back PHP 6 14. 02. 2007. 02:37
Pretraga po registrovanim co.yu shoba Web Hosting, web serveri i operativni sistemi 7 29. 09. 2005. 10:39


Vreme je GMT +2. Trenutno vreme je 19:24.


Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.
Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.