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: 6943 | Odgovora: 27 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

vatri
Banja Luka, RS

Član broj: 68697
Poruke: 1006
62.68.97.*



+18 Profil

icon Re: Kako napraviti pretragu za sajt sa nasim slovima?08.02.2011. u 08:26 - pre 160 meseci
Mislim da to nije to HTML vec "smece" (bas sam ja prije par dana imao problem sa tim).

http://www.mysql.rs/2010/07/smece-u-bazi-po-ko-zna-koji-put/

Znači treba uvjek nakon konekcije uraditi "SET NAMES UTF8".
 
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?08.02.2011. u 21:33 - pre 160 meseci
Ah da, video sam taj clanak.
Nekao sam shvatio da su problem nasa mala/velika slova pa zato rekoh za utf8_general_ci. Verovatno sam jos nesto citao pa pobrkao.. Nebitno :)
Nego, kad sam vec tu, nije valjda da nema neki bolji nacin, neko custom poredjenje (kao sto je ci za o i O, tako nesto za kvacice i bez) nego mora kroz regex da se naznaci da su c, č, ć... isto ?
 
Odgovor na temu

mitke013
As Divljine
Freelancer

Član broj: 231934
Poruke: 338
*.dynamic.isp.telekom.rs.



+34 Profil

icon Re: Kako napraviti pretragu za sajt sa nasim slovima?09.02.2011. u 01:37 - pre 160 meseci
Citat:
strutter.poison: Ah da, video sam taj clanak.
Nekao sam shvatio da su problem nasa mala/velika slova pa zato rekoh za utf8_general_ci. Verovatno sam jos nesto citao pa pobrkao.. Nebitno
Nego, kad sam vec tu, nije valjda da nema neki bolji nacin, neko custom poredjenje (kao sto je ci za o i O, tako nesto za kvacice i bez) nego mora kroz regex da se naznaci da su c, č, ć... isto ?


Ima jedno resenje, najbolje ali i najkomplikovanije: indeksiranje kljucnih reci.

Pogledaj kako to izgleda u praksi.

Obrati paznju da je term za pretragu: 'Mičhael Jaćkson' i program je ipak nasao 'Michael Jackson'. Isto ce da radi i u suprotnom smeru; ako je title 'Mičhael Jaćkson' a ti upises 'Michael Jackson' za term, dobices iste rezultate.

Ako ces jos da se igras, ukucaj 'adagio for strings' u search polje. Ili 'kevin and perry go large', cisto da vidis kako to sve radi.

Prica iza toga je sledeca:
nema 'LIKE' komande; suvise je spora i neprakticna. Tabela song ima jos jednu pratecu tabelu 'song_index' gde se cuvaju kljucne reci za pretragu; u gornjem primeru, to su kolone 'title' i 'tags'. Tamo se upisuju 'ociscene' reci tj. 'Mičhael' postaje 'michael' i stavlja se referenca ka pesmi gde se ta rec nalazi. Pogledaj sliku, bice ti jasnije.

Program radi tako sto prvo protrci kroz 'song_index', pokupi id-eve pesama, a zatim vrati pesme po vaznosti pretrage. Tj. po zbiru reci koje se poklapaju.

E sad;
ja koristim Doctrine koji prljavi deo posla radi za mene. Da bi ti uradio ovako nesto, prouci ovaj tekst . Videces da nije neki problem izvesti isto sa obicnim sql-om, programer je pokazao koji se SQL-ovi izvrsavaju.

Pros:
1. dobijam rezultate poredjane po vaznosti (relevance). Cak i ako neka rec nije pravilno upisana, program ce uraditi pretragu po ostalim recima
2. daleko brza pretraga nego koriscenjem 'like'. Like radi tako sto prodje kroz SVE rezultate iz tabele, vrseci poredjenje bajt po bajt. Vrlo, vrlo sporo kod vecih tabela (recimo 10.000++ redova, verovatno i manje). Tek sa regexp-om se sve to uspori preko svake mere.

Cons:
ako ne koristis ORM, moraces rucno da napises ovako nesto. Zato sam ti dao link da shvatis kako to radi u pozadini, zapravo sam kod uopste nije ni toliko komplikovan. Vazna je ideja koju je autor Doctrine-a koristio.

Evo ti jos 'food for thoughts' , pogledaj 'related audios' dole desno. Prvih 6 rezultata je 'relevance search', donja 4 se drugacije racunaju (duga prica). Cela prica je veoma slicna youtube-u.

Note:
ovaj program je work-in-progress pa ako natrcis na prazan link, samo se vrati nazad i probaj neki drugi. If it is not a bug, it's a feature
Prikačeni fajlovi
 
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?09.02.2011. u 06:21 - pre 160 meseci
Citat:
Like radi tako sto prodje kroz SVE rezultate iz tabele, vrseci poredjenje bajt po bajt. Vrlo, vrlo sporo kod vecih tabela (recimo 10.000++ redova, verovatno i manje)

Nije istina da vrlo sporo radi kod 10.000 redova,ja imam u tabeli vise od 200.000 redova i radi brzo jos uvek.Jedan prijatelj koji se mnogo duze bavi programiranjem od mene je
rekao da se neko usporenje primeti tek kod ~2.000.000 redova.
Sve na jednom mestu:
http://www.oxo.rs
 
Odgovor na temu

VladaSu

Član broj: 31634
Poruke: 1099
*.dynamic.isp.telekom.rs.



+218 Profil

icon Re: Kako napraviti pretragu za sajt sa nasim slovima?09.02.2011. u 12:03 - pre 160 meseci
Ako neko trazi: šišarka, šisarka, sišarka, sisarka ti to uvek sa php prebacis u sisarka.

U bazi da imas jednu kolonu ili tabelu za pretrag gde ces staviti sve bitne reci koje ti trebaju. U ovom slucaju ubacices rec sisarka.

Pretraga ce raditi brze, bice fleksibilnije jer ces moci ubaciti i varijacije reci, npr sisarkE. sisarkOM, sisarkU, sve kolone ce biti u jednoj koloni...
Ali ti rece da ti se ne svidja zbog dupliranja sadrzaja. Sve zavisi. U nekim slucajevima moze biti dobro.

Mislim da se ovaj Mitketov primer svodi na to.

Druga nacin da ti utf8 bude u utf_8_general_ci koji ne pravi razliku izmedju č, ć i c, izmedju š i s.
Jedino đ i dj moze da ti bude problem ali sam search tekst mozes da pripremis da ti dj bude d a i ostavis original rec.

A ako ti nije utf_8_general_ci koristi nesto kao WHERE col LIKE 'šisarke ' COLLATE utf8_general_ci

Svaki collation ima svoj order i svoje slicne karaktere.

[Ovu poruku je menjao VladaSu dana 09.02.2011. u 13:15 GMT+1]
[Ovu poruku je menjao VladaSu dana 14.06.2003. u 11:22 GMT+1]
 
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?09.02.2011. u 16:32 - pre 160 meseci
Pa da, secam se da sam jednom probavao nesto sa collation. Ali nisam bio siguran za kukice, pa jos niko ne pominje utf8_general_ci, reko bolje da priznam gresku nego da se ubedjujem kad nisam siguran. :)

@mitke013
To je dobro resenje, citao sam na dosta mesta da se savetuje upravo to. Daki je pomenuo tagove sto je vrlo slicno. Jednostavno je i fleksibilno. Tako sam odradjivao pretragu onako na brzinu.
Meni sa mojim maleckim iskustvom nije jos trebalo full text search u bazi (polja gde je taj text, ne tagovi). Izveo sam to preko lucene posto je bilo na dohvat ruke u zend-u. Tu se dobija i poredjenje rezultata pretrage, pa onda na vrhu budu relevantniji. Trebalo bi i da je brze nego baza, plus kod mnogo pretrage db server nije opterecen.
Ovo je tvoj sajt? Nisam sad u prilici, ali pogledacu. Vidi li se kod negde ili samo kako funkcionise?
 
Odgovor na temu

mitke013
As Divljine
Freelancer

Član broj: 231934
Poruke: 338
*.dynamic.isp.telekom.rs.



+34 Profil

icon Re: Kako napraviti pretragu za sajt sa nasim slovima?09.02.2011. u 19:37 - pre 160 meseci
Citat:
strutter.poison:
Ovo je tvoj sajt? Nisam sad u prilici, ali pogledacu. Vidi li se kod negde ili samo kako funkcionise?


To je sajt koji radim za klijenta, bice gotov za par dana. Mozes da vidis samo kako funkcionise, kod i da ti posaljem ne verujem da ce ti nesto pomoci ako ne koristis Doctrine.
 
Odgovor na temu

tkaranovic
Tomislav Karanović
Beograd

Član broj: 220507
Poruke: 307



+18 Profil

icon Re: Kako napraviti pretragu za sajt sa nasim slovima?09.02.2011. u 21:37 - pre 160 meseci
Kada sam pravio program Pretraga tražio sam da vidim kakvih sve ima sličnih programa i sećam se da sam nalazio pograme koji su radili pretragu sajtova i izbacivali rezultate. Čini mi se i u nekom obliku koji se mogao koristiti ali se slabo sećam detalja...

Nemam nikakav link i ovo sam napisao samo po sećanju... a ne mogu da se setim ni kako sam ih pronalazio niti imam više neki kod sebe.
 
Odgovor na temu

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

Strane: 1 2

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

Postavi temu Odgovori

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