Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

Kako napraviti malo lepsu pretragu?

[es] :: PHP :: Kako napraviti malo lepsu pretragu?

[ Pregleda: 2884 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Jorgovan88
Jorgovan88

Član broj: 190307
Poruke: 421



+9 Profil

icon Kako napraviti malo lepsu pretragu?23.10.2014. u 00:25 - pre 77 meseci
Da li bi neko mogao da mi objasni kako da napravim lepsu pretragu na sajtu... Trenutno mi ova linija obavlja tu funkciju medjutim nisam zadovoljan

Code:
mysql_query("SELECT * FROM articles WHERE title LIKE '%".$query."%' ORDER BY id DESC LIMIT 50");


Znaci ovaj kod vraca 50 stvari iz baze ali meni trebaju drugaciji rezultati... za primer uzecemo ovaj naslov

Citat:
Kako napraviti malo lepsu pretragu?



Ukoliko je kljucna rec "Kako napraviti" onda ce ova tema izaci u pretrazi ali ako je kljucna rec "Kako napraviti pretragu" onda se nece pojaviti.... Hocu da kazem da bi trebao mozda neki explode da radim pa da pretrazujem valjda...
treba valjda da brojim koliko ima reci i onda da pretrazim za prvu rec pa od tih rezultata pretrazujem drgu i tako ce biti sve manje i manje rezultata i na kraju dobijemo konacni rezultat...

tnx

[Ovu poruku je menjao Jorgovan88 dana 23.10.2014. u 01:40 GMT+1]
 
Odgovor na temu

Cola
Slađan Čolić
Banja Luka

Član broj: 23736
Poruke: 160
*.lanaco.com.

Sajt: www.knjigaimena.com


+5 Profil

icon Re: Kako napraviti malo lepsu pretragu?23.10.2014. u 07:08 - pre 77 meseci
ovako nekako
Code:

            $where = "";
            $queries = explode (" ", $query);
            foreach ($queries as $value)
            {                
                if($where != "")
                {
                    $where .= " OR \n";
                }
                $where .= " title LIKE '%" . $value . "%' ";
            }
            if($where != "")
            {
                $where = " WHERE \n" . $where;
            }
            mysql_query("SELECT * FROM articles " . $where . " ORDER BY id DESC LIMIT 50");

naravno ovde nisam obraćao pažnju na SQL injection
 
Odgovor na temu

Cola
Slađan Čolić
Banja Luka

Član broj: 23736
Poruke: 160
*.lanaco.com.

Sajt: www.knjigaimena.com


+5 Profil

icon Re: Kako napraviti malo lepsu pretragu?23.10.2014. u 07:27 - pre 77 meseci
PS
da bi ovo bolje radilo moraš napraviti i drugačije rangiranje.
Zašto?
Npr:
"Kako napraviti dobru a lijepu pretragu"
Ovo slovo "a" će vratiti sve naslove koji u sebi sadrže to slovo. Možeš da izbacuješ riječi npr koje su kraće od 3 karaktera ili da formiraš neki
rejting koji bildaš zajedno sa wherom u foreach petlji
Code:

                $rating .= "\n+CASE";
                $rating .= "\n    WHEN title LIKE '" . $value . "%' THEN 1000"; //Poeni ako naslov počinje sa
                $rating .= "\n    WHEN title LIKE '% " . $value . "%' THEN 950"; //Poeni ako naslov sadrži term sa spejsom ispred
                $rating .= "\n    WHEN title LIKE '%." . $value . "%' THEN 900"; //Poeni ako naslov sadrži term sa tačkom ispred
                $rating .= "\n    WHEN title LIKE '%?" . $value . "%' THEN 900"; //Poeni ako naslov sadrži term sa upitnikom ispred
                $rating .= "\n    WHEN title LIKE '%!" . $value . "%' THEN 900"; //Poeni ako naslov sadrži term sa uskličnikom ispred                
                $rating .= "\n    WHEN title LIKE '%," . $value . "%' THEN 900"; //Poeni ako naslov term sa zarezom ispred
                $rating .= "\n    WHEN title LIKE '%-" . $value . "%' THEN 850"; //Poeni ako naslov term sa minusom ispred
                $rating .= "\n    WHEN title LIKE '%!_" . $value . "%' ESCAPE '!'  THEN 850"; //Poeni ako naslov sadrži term sa donjom crtom ispred
                $rating .= "\n    WHEN title LIKE '%" . $value . "%' THEN 510"; //Poeni ako naslov sadrži term bilo gdje u sebi
                $rating .= "\n    ELSE 0"; //bez poena
                $rating .= "\nEND * " . strlen($value); //množimo sa dužinom riječi da bi duže riječi imale više poena

i na kraju to dodamo u upit
Code:

            if($rating != "")
            {
                $rating = " ORDER BY " . $rating ;
            }
            mysql_query("SELECT * FROM articles " . $where . $rating . " LIMIT 50");

 
Odgovor na temu

Nemanja Avramović
Software architect
Tap medical
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4383
*.dynamic.isp.telekom.rs.

Sajt: https://avramovic.info


+45 Profil

icon Re: Kako napraviti malo lepsu pretragu?23.10.2014. u 10:23 - pre 77 meseci
Koristi FULL TEXT search. Evo lepog objašnjenja: http://devzone.zend.com/26/using-mysql-full-text-searching/

I naravno, uvek korisna MySQL dokumentacija: http://dev.mysql.com/doc/refman/5.5/en/fulltext-search.html


Laravel Srbija.

[NE PRUŽAM PODRŠKU ZA PHP PREKO PRIVATNIH PORUKA!]
 
Odgovor na temu

Nemanja_666
Nemanja Tatic
Gradiska

Član broj: 116292
Poruke: 221
*.teol.net.



+19 Profil

icon Re: Kako napraviti malo lepsu pretragu?23.10.2014. u 22:53 - pre 77 meseci
U zadnje vrijeme koristim ovo: http://www.elasticsearch.org/
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1074
*.ptt.rs.



+213 Profil

icon Re: Kako napraviti malo lepsu pretragu?24.10.2014. u 13:32 - pre 77 meseci
Ja bih dodao jos jednu tabelu slicnih fraza i reci.
Recimo ako je 'Kako napraviti pretragu' mozda neko kuca 'Kako napraviti pretragE' ili 'pravljenje pretrage'.
Rezultate bih redjao po ovom redu:
'Kako napraviti pretragu',
'Kako napraviti pretrage',
'napraviti pretragu',
'napraviti pretrage',
'pravljenje pretrage'
'pretragu',
'pretrage',
'napraviti'
'pravljenje',
'praviti'.......

Znaci u napravio bih tabelu slicnih fraza i reci i sve to bih ukljucio u pretragu.
U ovom slucaju logicno je da rec pretraga ima najvecu tezinu pa napraviti pa tek onda kako.
Prvo bih trazio najdruze fraze i njene slizne fraze. pa bih onda trazio najveci moguci broj koji daje kombinacija reci sa najvecom tezinom i tako smanjivao prvo kombinaciju tezine
pa tek onda smanjivao kombinaciju duzine.
Ja sam sa ovim najvise bio zadovoljan.

Na kraju kada sve to napravis i vidis da nije idealno i da admini ne unose logicno podatke i nemaju inspiraciju onda uzmes za 5 minuta ugradis google search plugin za tvoj sajt.

[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

valjan
Janko Valencik
Inženjer/programer
Alfanum d.o.o.
Novi Sad

Član broj: 158605
Poruke: 3497
*.dynamic.sbb.rs.

Sajt: www.alfanum.co.rs


+547 Profil

icon Re: Kako napraviti malo lepsu pretragu?24.10.2014. u 19:40 - pre 77 meseci
Ili naučiš regularne izraze i osnove leksema, infleksija i derivacija reči, i onda umesto glomaznih tabela i algoritama sve rešiš daleko efikasnije...
 
Odgovor na temu

Goran Rakić
Beograd

Moderator
Član broj: 999
Poruke: 3766

Sajt: blog.goranrakic.com


+125 Profil

icon Re: Kako napraviti malo lepsu pretragu?24.10.2014. u 20:43 - pre 77 meseci
Regularnim izrazima? Teško bez Tjuring kompletnosti.
http://sr.libreoffice.org — slobodan kancelarijski paket, obrada teksta, tablice,
prezentacije, legalno bez troškova licenciranja
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1074
*.ptt.rs.



+213 Profil

icon Re: Kako napraviti malo lepsu pretragu?24.10.2014. u 21:00 - pre 77 meseci
Citat:
valjan:
Ili naučiš regularne izraze i osnove leksema, infleksija i derivacija reči, i onda umesto glomaznih tabela i algoritama sve rešiš daleko efikasnije...


Da je tako onda bi i google tako radio a to mozes jednostavnim testom da utvrdis.


[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
Odgovor na temu

[es] :: PHP :: Kako napraviti malo lepsu pretragu?

[ Pregleda: 2884 | Odgovora: 8 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.