Takođe, mislim da je korisno napraviti skup provera. Recimo reči sa kvačicama i bez kvačica. Kada ubacuješ reči u tabelu razdvoj nekim poljem reči sa kvačicama i bez (npr. polje kvacice = 1 ako ima kvačice, odnosno 0 ako nema). To polje obavezno indeksiraj i prvo vrši upit za to polje.
Postoji izvestan broj različitih obrazaca za proveru sličnih ili pogrešnih (pogrešno napisanih) reči...tebi treba nešto tipa auto-suggestion, gde će se proveravati reči dok korisnik kuca (najbolje je kad pritisne razmak).
Za php postoji funkcija
levenshtein koja izračunava distancu između 2 reči.
Još jedan koristan link:
http://www.merriampark.com/ld.htm
PHP soundex funkcija:
http://networking.mydesigntool...iewtopic.php?tid=482&id=31
MySQL upit bi mogao izgledati ovako:
Code:
SELECT rec, kvacice, prvo_slovo, poslednje_slovo
FROM reci
WHERE ( SOUNDEX(rec) = SOUNDEX($_POST[korisnikova_rec]) )
AND confirmed='Y'
ORDER BY kvacice, rec
Dakle, ovaj upit će tražiti reči koji zvuče kao uneta reč.
Evo kako bi izgledao jednostavan primer:
Prvo iz baze izvučeš npr. 50 reči sa gornjim primerom (upitom). Alternativno možeš napraviti još jedan upit gde će izvlačiti isto to samo sa prvim početnim slovom - dodaš u upit AND LOWER(rec) LIKE LOWER('prvo_slovo_unete_reci%'). Sa php-om izdvojiš prvo slovo.
Rezultate iz ova dva upita "provučeš" kroz levenshtein funkciju (php) i upoređuješ sa unosom korisnika. Uspešnost će biti sigurno 90-100%. Ovako bi izgledao neki osnovni sistem za korekciju reči, mada se mogu dodati još nekoliko pravila.
Inače,
levenshtein algoritam se koristi za proveru pravopisa, prepoznavanje govora, DNA analizu itd...
[Ovu poruku je menjao ivan.a dana 08.04.2011. u 03:10 GMT+1]
I hope I didn't brain my damage - Homer
if (wife.position == kitchen) {return sandwich};