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

Kako napraviti pretragu za sajt sa nasim slovima?

[es] :: PHP :: Kako napraviti pretragu za sajt sa nasim slovima?

Strane: 1 2

[ Pregleda: 6934 | Odgovora: 27 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

sekvoja

Član broj: 91239
Poruke: 269
*.ptt.rs.



Profil

icon Kako napraviti pretragu za sajt sa nasim slovima?18.10.2008. u 03:22 - pre 188 meseci
Tekstovi upisani u bazu sadrze nase karaktere čćšđž

Ako neko ukuca "šišarka" pretraga je uspesna, ali ako ukuca "sisarka" nema rezultata.

Zanima ma kako ste vi to resavali...
Meni trenutno pada na pamet samo dupliranje sadrzja u bazi, sto i nije bas neko resenje.
U jedno polje se upisuje regularno a u drugo se upisuje isti tekst samo su nasi karakteri
konvertovani (č->c, š->s itd).

Ili npr da rezultat pretrage ubacim u array pa da sadrzaj tog array-a konvertujem i zatim
pretrazim array...
Hmm, treba mi ideja... poz
 
Odgovor na temu

dakipro
Dalibor Jovic
Web Developer
Bergen, Norway

Moderator
Član broj: 31848
Poruke: 1792
*.adsl.beotel.net.

Sajt: norway.dakipro.com


+190 Profil

icon Re: Kako napraviti pretragu za sajt sa nasim slovima?18.10.2008. u 08:17 - pre 188 meseci
Sad mozda zavisi od strukture baze i kolicine podataka. Ako nije nesto ogronmo, i ako sadrzaj nije blob (text, a idealno bi bilo da je varchar) onda ubaci duplikate sa obicnim slovima i uvek pretrazuj po obicnim slovima, i to tako sto ces ono sto korisnik unese da pretvoris u 'obicna' slova. Drugo je da za uneto šišarka ti trazis OR šišarka OR sišarka OR šisarka OR sisarka. Sve sem da sve rezultate izvadis u niz pa da pretrazuejes niz, to je lose, neces ni paginaciju imati onda, a imaces upit nad celom tabelom, sto uopste nije dobro.
Sad nisam probavao razliku izmedju prva dva, kazem, zavisi od strukture tabele. Ja cesto klijentu dodam jos jedno polje Search Tags da tu upise sve sto zeli da ima veze sa proizvodom, recimo nekada su proizvodi KVA-2322 pa onda KVA 2322 ili KVA2322 ne daje rezultate, onda klijent sam to resi onako kako misli da je najpogodnije. Opet, nemoz ovo primeniti uvek.
Mozda pak da pogledas neke gotove forume da li i kako oni to resavaju.

 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-3.sezampro.yu.



+33 Profil

icon Re: Kako napraviti pretragu za sajt sa nasim slovima?18.10.2008. u 15:10 - pre 188 meseci
Ne znam kako, ali ja recimo na pretrazi na ovom mom sajtu taj problem nemam. Evo primera: ovo su rezultati pretrage sa unosom "sledeća", a ovo sa unosom "sledeca". Rezultati su kao shto vidish isti... U bazi su mi podaci u UTF8 enkodingu, a upit je standardan za pretragu, odnosno u WHERE-u koristim LIKE: WHERE (t.naslov LIKE '%$unos%' OR t.opis LIKE '%$unos%').

Ali ako vec ne mozhesh da izbegnesh taj problem, mislim da bi ti najbolje reshenje bilo da tu rech koju neko ukuca pre upita "provuchesh" kroz neku vrstu transliteratora, odnosno, da odradish zamenu nashish slova sa standardnim slovima, a onda u upitu da pitash za obe varijante, npr. WHERE (tekst LIKE '%$unos_obichan%' OR tekst LIKE '%$unos_nasha_slova%').
 
Odgovor na temu

sekvoja

Član broj: 91239
Poruke: 269
*.ptt.rs.



Profil

icon Re: Kako napraviti pretragu za sajt sa nasim slovima?18.10.2008. u 15:44 - pre 188 meseci
I ja koristim standardan upit
Code:
...WHERE "title LIKE '%$searchphrase%'...

ali definitivno nije moguce da vrati 'sledeca' i 'sledeća. Takodje u bazi cuvam podatke u UTF-8 encodingu.
Za sada cu se drzati duplog sadrzaja pa ako nesto smislim promenicu...

P.S.
Kako bih mogao da konvertujem npr 'sisarka' u 'šisarka', 'sišarka', 'šišarka' u nekoj for petlji?

[Ovu poruku je menjao sekvoja dana 18.10.2008. u 17:05 GMT+1]
 
Odgovor na temu

Jbyn4e

Član broj: 422
Poruke: 6049
*.ptt.rs.



+257 Profil

icon Re: Kako napraviti pretragu za sajt sa nasim slovima?18.10.2008. u 16:31 - pre 188 meseci
Sta ste svi zapeli za LIKE, kad postoji REGEXP?
http://dev.mysql.com/doc/refman/5.0/en/regexp.html

Code:

SELECT * FROM tabela WHERE uslov REGEXP '[cčć]' ;

ce dati sva polja koja imaju c, č ili ć u uslovu.
Kombinujte to sa str_replace (npr ako je u stringu c, zameni ga sa [cčć] i to prosledi kao regexp...)
Kad sve ostalo zakaže, pročitaj uputstvo...
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-3.sezampro.yu.



+33 Profil

icon Re: Kako napraviti pretragu za sajt sa nasim slovima?18.10.2008. u 18:26 - pre 188 meseci
Citat:
sekvoja:ali definitivno nije moguce da vrati 'sledeca' i 'sledeća.

Vidish da jeste... :D

Citat:
sekvoja: Kako bih mogao da konvertujem npr 'sisarka' u 'šisarka', 'sišarka', 'šišarka' u nekoj for petlji?

Mogao bi sa funkcijom str_replace. Mozhesh npr. da napravish dva niza, pa da u for petlji samo izmenjash slova, ovako:
Code:

$nasha_slova = array('š', 'đ', 'ž', 'č', 'ć');
$slova = array('s', 'dj', 'z', 'c', 'c');

for ($i = 0; $i<count($slova); $i++){
    $tekst = str_replace($nasha_slova[$i], $slova[$i], $tekst); 
}

Ako si na to mislio...
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
77.46.138.*

Sajt: https://avramovic.info


+46 Profil

icon Re: Kako napraviti pretragu za sajt sa nasim slovima?18.10.2008. u 18:56 - pre 188 meseci
Taj kod ne radi zato što u svakoj iteraciji uzima string $tekst i menja svako pojavljivanje s će zameniti sa š itd...

Ovde bi mogao neki brute-force-like pristup (ili nešto što nema veze sa brute-force-om, ali meni ovakav izraz zvuči skroz logično ) da se primeni, ali ne znam koliko bi to trošilo resursa? U svakom slučaju vredi pokušati
Laravel Srbija.

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

sekvoja

Član broj: 91239
Poruke: 269
*.ptt.rs.



Profil

icon Re: Kako napraviti pretragu za sajt sa nasim slovima?18.10.2008. u 19:08 - pre 188 meseci
REGEXP obecava ali ga ja jos uvek nisam usavrsio,
moracu da se pozabavim time...
 
Odgovor na temu

Nikola Poša
Backend (PHP) developer
Beograd

Član broj: 173839
Poruke: 1616
*.adsl-3.sezampro.yu.



+33 Profil

icon Re: Kako napraviti pretragu za sajt sa nasim slovima?18.10.2008. u 21:09 - pre 188 meseci
Citat:
Nemanja Avramović: Taj kod ne radi zato što u svakoj iteraciji uzima string $tekst i menja svako pojavljivanje s će zameniti sa š itd...

A pa da, tek sad vidim shta je on trazhio, ja sam mislio da je hteo da od "šišarka" dobije "sisarka", i obrnuto...
 
Odgovor na temu

Nemanja Avramović
Engineering Manager
MENU Technologies
Beograd, Srbija

Moderator
Član broj: 32202
Poruke: 4391
77.46.138.*

Sajt: https://avramovic.info


+46 Profil

icon Re: Kako napraviti pretragu za sajt sa nasim slovima?18.10.2008. u 21:54 - pre 188 meseci
I u tom slučaju (da hoće sve da zameni) petlja bi bila nepotrebna. Ovde bi trebalo menjati po jedno slovo u svakoj iteraciji (pa onda po dva, i tako do broja slova koliko ih ima u stringu), a stvar se komplikuje sa brojem slova koja se menjaju (šđč枊ĐČĆŽ).

Zanimljiv izazov... možda bi RegEx pomogao...
Laravel Srbija.

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

sekvoja

Član broj: 91239
Poruke: 269
*.ptt.rs.



Profil

icon Re: Kako napraviti pretragu za sajt sa nasim slovima?19.10.2008. u 03:02 - pre 188 meseci
Citat:
Nemanja Avramović:Ovde bi trebalo menjati po jedno slovo u svakoj iteraciji (pa onda po dva, i tako do broja slova koliko ih ima u stringu)...


To sam i mislio, ali garant postoji resenje u jedoj liniji koda,
samo sto ja ne znam... :)

Ako je neko izvalio resenje bilo bi lepo da podeli sa ostalima :)
Pozdrav
 
Odgovor na temu

Jbyn4e

Član broj: 422
Poruke: 6049
*.ptt.rs.



+257 Profil

icon Re: Kako napraviti pretragu za sajt sa nasim slovima?19.10.2008. u 10:14 - pre 188 meseci
Pa zar ovde niko ne zna regularne izraze?
Znaci rekao si:
Citat:

Ako neko ukuca "šišarka" pretraga je uspesna, ali ako ukuca "sisarka" nema rezultata.


regexp na [sš]i[sš]arka ce ti dati i sisarka, i sišarka i šisarka i šišarka. Šta tu nije jasno?
Kad sve ostalo zakaže, pročitaj uputstvo...
 
Odgovor na temu

goldmankm
k.m.

Član broj: 52786
Poruke: 201
93.86.141.*



Profil

icon Re: Kako napraviti pretragu za sajt sa nasim slovima?19.10.2008. u 10:34 - pre 188 meseci
evo pravog primera:
http://www.belestrane.nadlanu.com/site/
 
Odgovor na temu

robert63

Član broj: 55855
Poruke: 3732
77.46.164.*



+101 Profil

icon Re: Kako napraviti pretragu za sajt sa nasim slovima?19.10.2008. u 10:34 - pre 188 meseci
Aj sada jedno mozda " nedoraslo" pitanje:

A zasto se u tom programcetu za pretragu ne uradi da kada ukucas
sisarka
( al'smo se u'vatili te sisarke )

onda program pita : Jeste li mislili na " šišarka "-?

A korisniku se prepusta da se odluci da-ili-ne !

'el bi mozda moglo tako nesto da se izvede?

[Ovu poruku je menjao robert63 dana 19.10.2008. u 13:24 GMT+1]
 
Odgovor na temu

sekvoja

Član broj: 91239
Poruke: 269
*.ptt.rs.



Profil

icon Re: Kako napraviti pretragu za sajt sa nasim slovima?19.10.2008. u 17:19 - pre 188 meseci
Citat:
Jbyn4e: regexp na [sš]i[sš]arka ce ti dati i sisarka, i sišarka i šisarka i šišarka. Šta tu nije jasno?


Nije jasno sto ne poznajem regexp :), ali vec sam se bacio na ucenje

[Ovu poruku je menjao sekvoja dana 19.10.2008. u 18:32 GMT+1]
 
Odgovor na temu

darkofdoom83
Horgos

Član broj: 3098
Poruke: 739
*.dynamic.isp.telekom.rs.

Sajt: www.oxo.rs


+1 Profil

icon Re: Kako napraviti pretragu za sajt sa nasim slovima?07.02.2011. u 19:30 - pre 160 meseci
izvinjavam se sto ponovo otvaram temu,ali imam isti problem i nikako da ga resim.
Naime hocu da ako korisnik recimo upise slusalice da mu se pojave i slušalice u rezultatima pretraga.

Polje u bazi u kojem radim regex je varchar i utf8_unicode_ci .

evo recimo bas za primer reci slusalice samsung sam probao dve vrste regexa,ali ni jedna ne radi:

SELECT * FROM tabela WHERE naslov REGEXP '(.*)[sš]lu[sš]ali[cčć]e(.*)[sš]am[sš]ung(.*)' - ovo je verzija kao sto stoji u bazi (pre nego sto se pretvori u utf-8 na stranici)
SELECT * FROM tabela WHERE naslov REGEXP '(.*)[sš]lu[sš¡]ali[cčć]e(.*)[sš]am[sš]ung(.*)' - ovo je verzija sa nasim slovima ali mi ni ovako ne radi.

znaci vrati mi rezultate bas kao sto sam i zadao,bez nasih slova.
Molim vas pomozite neko ako zna posto cu polako da posizim od ovoga... :)

Sve na jednom mestu:
http://www.oxo.rs
 
Odgovor na temu

darkofdoom83
Horgos

Član broj: 3098
Poruke: 739
*.dynamic.isp.telekom.rs.

Sajt: www.oxo.rs


+1 Profil

icon Re: Kako napraviti pretragu za sajt sa nasim slovima?07.02.2011. u 20:12 - pre 160 meseci
ajde da ja odgovorim posto je problem resen.
Pre svakog upisa i iscitavanja iz baze treba opaliti mysql_query("SET NAMES 'UTF8'");

Ako se ovako odradi i obican like "%nesto%" ce da vrati sa i bez nasih slova.
Sve na jednom mestu:
http://www.oxo.rs
 
Odgovor na temu

peca89bg
Beograd

Član broj: 202034
Poruke: 354
95.180.61.*



+6 Profil

icon Re: Kako napraviti pretragu za sajt sa nasim slovima?07.02.2011. u 21:16 - pre 160 meseci
kakvi regularni izrazi za pretragu? ?

Code:

$search = $_POST["tekst"];
$search = trim($search);
$serach = clean($search); // f-ja za prevent mysql injection - bilo koja ili jednostavno addslashes()

//ovde upit

while(bla bla)
{
echo "Naziv: " . htmlspecialchars($niz["naziv"]) . "........";
}


 
Odgovor na temu

strutter.poison

Član broj: 264822
Poruke: 115
*.dynamic.isp.telekom.rs.



+2 Profil

icon Re: Kako napraviti pretragu za sajt sa nasim slovima?07.02.2011. u 23:19 - pre 160 meseci
Hm. resava li se ovo sa collation recimo utf8_general_ci?
 
Odgovor na temu

darkofdoom83
Horgos

Član broj: 3098
Poruke: 739
*.dynamic.isp.telekom.rs.

Sajt: www.oxo.rs


+1 Profil

icon Re: Kako napraviti pretragu za sajt sa nasim slovima?08.02.2011. u 07:13 - pre 160 meseci
ne znam,ali ako posle konektovanja na bazu ne odradim ovo set names tada se u bazu nece upisati čć itd vec html za ove karaktere.
Sve na jednom mestu:
http://www.oxo.rs
 
Odgovor na temu

[es] :: PHP :: Kako napraviti pretragu za sajt sa nasim slovima?

Strane: 1 2

[ Pregleda: 6934 | Odgovora: 27 ] > FB > Twit

Postavi temu Odgovori

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