[ Tudfa @ 04.07.2009. 19:18 ] @
Pokušavam uradim korekciju naših reči u nekom tekstu.

Recimo da imam ove tekstove:
"visina, drugacije, velicina, trcanje..."
i, mozda nije baš super primer, ali je interesantan
"salje plavusa prijateljici SMS : hoces da idemo sutra na sisanje i satiranje".

Cilj mi je da reči koje su kao velicina automatski zamenim, jer u bazi ne postoji druga reč sem veličina,
a one reči koje su tipa satiranje, koje mogu da se nadju u varijanti satiranje i šatiranje samo označim.

E sad nikako da dodjem do neke ideje koja bi ovo obavila sa malim brojem upita..


[ bogdan.kecman @ 05.07.2009. 03:12 ] @
to resis kolacijom ... napravis kolaciju (vec postoji) gde su ta slova ista, i onda samo zamenis sve reci sa novom reci ... nije bas "turbo jednostavno" i jos manje "brzo" .. ali moze da se izvede
[ Tudfa @ 06.07.2009. 12:43 ] @
Citat:
bogdan.kecman: to resis kolacijom ... napravis kolaciju (vec postoji) gde su ta slova ista, i onda samo zamenis sve reci sa novom reci ...

Jel može neki primer za to sa kolacijom ako nije problem ? Nije mi baš jasno šta treba da uradim. Ja sam koristio za proveru onaj BINARY operator. Da li treba
da koristim COLLATE ? I najviše me muči taj replace koji bi da uradim odjednom za sve reči.

Evo kako sam išao, i čime sam dobio željeni rezultat:

- tekst rastavim na reči, isfiltriram da ostanu samo one sa c,č,ć,š,z,ž,s, i izbacim duplikate (ovo sve uradim u php-u)
- nakon toga radim upit za svaku reč, koji se svodi na upotrebu BINARY operatora da saznam jel treba reč da se ispravlja

To je mnogo upita, imam 30-40 reči po tekstu .Mada sve se izvrši za 0.3-0.4 sec u proseku.

Dobijem ja sve te reči iz jednog upita, sa WHERE word IN(...) ali problem je što kad vratim
takav rezultat koji sadrži samo ispravne reči ne mogu da znam koju neispravnu reč sa kojom ispravnom da zamenim .






[ bogdan.kecman @ 06.07.2009. 16:24 ] @
Citat:
Tudfa: Jel može neki primer za to sa kolacijom ako nije problem ? Nije mi baš jasno šta treba da uradim. Ja sam koristio za proveru onaj BINARY operator. Da li treba
da koristim COLLATE ?


ovako, fora sa collate je bas suprotna od binary. dakle odgovarajuci collate ce ti za poredjenje dve reci sa i bez nasih slova vratiti "true" tako ce za pravilan collation isto kao sto su veliko A i malo a "isto slovo" tako su c ć č ista slova ... te ce ti satiranje i i šatiranje biti isto....

Citat:

I najviše me muči taj replace koji bi da uradim odjednom za sve reči.


neces to uspeti kvalitetno da izvedes sa sql-om ... ovo sto sada radis je "ok" ... da bi proverio da li rec "treba" da se menja, moras da radis upravo suprotno od ovoga sto sam ti ja rekao - tj kako vec radis sa binary kako bi ti c i ć bili razliciti ...

ja sam relativno davno pisao neki php koji to ispravlja i moram da priznam da uopste nije bio "inteligentan" ... koristio sam strtr i matricu parova za izmenu ... pustim svaki "post" kroz taj strtr i to je to ... kako ga tacno php implementira uopste nisam gledao nit me zanimalo ... sa oko hiljadu slogova u matrici je radio "ok" brzo :)
[ Tudfa @ 06.07.2009. 17:13 ] @
Hvala na odgovoru Bogdane, bio je od pomoći i sad bar znam koje su mi varijante u opticaju da uradim ovo.
[ bogdan.kecman @ 06.07.2009. 19:51 ] @
nema na cemu, ne bi se bas slozio da sam ti nesto pomogao :( ... generalno tu nije sql od neke velike pomoci ... za strtr si sigurno vec znao ... za poredjenje stringova u sql-u sa kolacijom si znao ... (koristio si binary da bi dobio da se razlikuju, ja sam ti samo rekao kako da napravis da se ne razlikuju) i to je to ... sve u svemu php strtr radi extra brzo ... na primer na jednom forumu ima strtr niz od nekih ~1200 elemenata (reci koje menja drugim recima) ... i svaki post se prikazuje tako sto se pusti kroz strtr ... i uopste se ne oseca smor na serveru zbog toga ...