Pharos je napisao(la):
Žurim, pa nemam vremena da detaljno odgovaram. Evo samo na brzaka.
Rečnik radnik u oba smera, ako u okviru baze praviš više tabela, tj. za svako početno slovo po jedanu tabelu, za koji se jezik opredeljuješ, srpski ili engleski?
Ne opredeljujem se ni za jedan jezik, nego za
rec. Kada nadjem rec u tabeli, imam drugo polje koje mi govori koji je to jezik (pojednostavljeno <id, language, word> kao sto sam naveo).
Kao rezultat korisniku vracam tabelu sa dva stupca za svaki par jezika - jedan column je jedan jezik, a drugi je onaj drugi jezik (ukoliko je biran dest jezik).
Kod:
srpski engleski
------------------------------------
stan flat [brit]
stan apartment [amer]
stan condominium (condo) [amer]
Ukoliko rec (npr. "star") postoji u oba jezika, vracam dve tabele, ne vidim zasto je to problem?
Kod:
srpski engleski
------------------------------------
star old
star aged
star elderly
star mature
engleski srpski
------------------------------------
star zvezda
star poznata licnost
Ukoliko je koriscen dzoker kod pretrazivanja, ide i to u tabelu. S tim da se ponavljanje "star" u tabeli lako eliminise, naravno. Stvar je organizacije formulara da li covek zeli korisniku da ponudi src->dest jezike, mozda samo src pa da vrati prevod u svim postojecim jezicima u bazi, itd.
Mozda neko zeli samo da pogleda da li neka rec postoji uopste u recniku da bi proverio da li ju je ispravno napisao.
Upotrebom dzokera odnosno solidnim
"similar" algoritmom za trazenje slicnih sekvenci u recima je korisniku data i vise nego dovoljna fleksibilnost.
Pharos je napisao(la):
U Srpskom nemaš wqxy, a u engleskom nemaš šđžčć. Plus za imena tabela nije preporučljivo da sadrže unicode karaktere, što ne znači da neće uvek raditi.
Kao sto rekoh, ovakvom organizacijom se uopste ne orijentisem na jezike, nego na reci. Tako da mi je sasvim svejedno sto u srpskom nema reci na x ili w. U tabeli X ce se nalaziti reci koje pocinju na X u engleskom, francuskom, nemackom itd.
Posebne tabele za reci koje pocinju slovima sa kukama i kvakama ne bih ni kreirao. Dakle, reci koje pocinju na č ili ć bi isle u "c" tabelu. Ako nista drugo, a ono zbog toga sto moram da pretpostavim da korisnik mozda i nema na racunaru instaliran serbian raspored odnosno da rec i kuca bas sa "c" (mozda je lik englez ili amer i ne razume nase specijalne znake, a video je kako rec "otpilike izgleda"). Tu je posao onog algoritma za "slicne" reci da nadje sve matching rezultate. Tim principom bi bili pokriveni i specijalni znaci u drugim jezicima; reci u nemackom koje pocinju na "ö" bi isle u "O" tabelu, reci u francuskom koje pocinju na "é" bi isle u "E" tabelu itd. Formiranje mape aliasa pocetnih slova u kodu ne bi trebalo da predstavlja nikome problem.
Pharos je napisao(la):
Plus zamislimo da pravimo offline rečnik i ja sad trebam da unesem reč u textbox, i za svake uneseni karakter poziva se funkcija textbox keypress (kako god) koja vrši LIKE upit. Tu je potpuno bespotrebno deljenje na više tabela.
Mozda bi u tom scenariju bilo bespotrebno, ali ne bi bilo minus. Cak stavise, moglo bi se profitirati od toga; u onkeypress eventu izdvajanje prvog karaktera i formiranje queryja je brza operacija (cpu+ram), a sam query se opet izvrsava nad prilicno manjim recordsetom (disk). Pa i menjanje imena tabele u generisanim queryju bi se menjalo u onkey eventu samo i ako je to prvi karakter.
Mislio sam da sam objasnio zasto bih delio ovde tabele; prvenstveno zbog organizacije koja je dovoljno fleksibilna da dozvoljava prosirivanje za nove jezike. I kada se dodaje nov jezik, vrsi se linkovanje na vec postojeci set reci iz srpskog. I da neko hoce da plasira to kao offline recnik za dva konkretna jezika, nista lakse nego napraviti kopiju baze i obrisati skriptom sve reci koje ne spadaju u ta dva jezika.