Saturday, June 23, 2007

sözlük ve tavsiye etme işlemi

bi kaç ay önce bir tercüman arkadaşla bir proje yapalım dedik benim bir sitenin içeriğine ayıracak zamanım yok ama projeler arası değişik kod görmek kafamı dinlendiriyor. sonra karar verdik bir sözlük yapalım sonuçda zargan seslisozluk falan var benim bildiğim çok yok. dedim bende içerik gireceksen yapalım. sonra bana bi mdb yolladı o başlangıç noktamız oldu access her ne kadar kıl da olsa 2 ay güzel çalışdı artık yeni özelliklere ihtiyacımız vardı misal başlıkda belirtildiği gibi yazım hatası falan yapıldığında ses olarak yakın olan kelimeleri tavsiye etmek gibi.

bunu fatih ilk söyledi ben bi korkdum sonuçda daha önce hiç düşünmediğim bilmediğim bi alandı. bu konu aslında spell checkerların içinde geçermiş. ünlü bir algorithma metaphone önce bunu nasıl uygulasam diye bakarken birde ne görim meğersem eski dost mysqlde bu algoritmayla olmasada bu işi gören bir fonksiyon var imiş soundex deneme yapmam gerekdi olaydan pek bişey anlamadım ama anladığım şuydu bu işi db ye yıkarsam karlı çıkarım. bu çok klasikdir eğer herhangi bir işlemi db ye yıkarsanız daha hızlı çözersiniz ve çalışır.

mdb yi aldım mysql e sokacam mysql migration tool var biraz nazlandı utf8 le bi şekil gömçürdüm sonuçda db vardı elimde artık çalışmalıydı ama bir karakter problemi varki kol kadar saçma sapan işler dönüo dedim html den kaynaklanıyordur bu cins karakteri browser gösteremiyor ama bilakis mesele tamamen mysql migration tool un dandikliğiymiş. tabii bunu çözmem saatler aldı hostinge db yi kopyalamak ayrı bir dert shared hosting de yani ucuz işde mysql direk bağlantı vermiolar tabii güvenlik amaçlı. phpmyadmin de 2mb dan büyük dosya almam diye ayarlanmışki sadece sql dosyasıda alabilio epey uzun sürdü velhasılı sonuç. navicat sağlam bir araç aynı şekil utf8 alt yapıya onla insert yaptığımda karakter problemleri çözüldü.

soundex konusuna gelince şu benzeri bir sql istediğimizi yakalıyor.

select kelime from kelimeler where soundex('aranan ve bulunamamış kelime')=soundex(kelime)

ses olarak db de aranan kelimeye yakın olan bütün kelimeleri diziyor.
örnek sayfanın ortasına dizio yiğit mysql :)

bu işlem diğer dblerdede mevcut sanırım bi ara onlarıda test etsem neşeli olur. yoksa bu garip fonksiyonları kullanacak yer yok.

2 comments:

Mavera said...

Sevgili dostum her zamanki gibi işi "kotarmışsın :)"
lakin biraz fazla tavsiye ediyo biraz abukluyo gibi geldi örneğin :
http://sozlukcell.com/sozlukcell/default.aspx?word=amc%c4%b1k

de bi dünya tavsiye vermiş onuda biraz filtrelemen mümkünmüdür acep ?
sesli sozluk biraz filtrelemiş mesela

http://www.seslisozluk.com/?word=amc%FDk&go_search=Search

bu arada bu siteden bişe kazanıyomusun varmı reklam veren filan bayaa iyi olmuş aslında

ozzy said...

o tavsiyeler 2 yoldanda geliyor ondan çok oluyor. hem ingilizce hem türkçede arama yapıp gösteriyorum.

henüz para gelmiyor zaten daha beta kodu bitmedi. bitince reklam veren çıkar zahar.

odd string diff

 https://leetcode.com/problems/odd-string-difference/ Beats 19.92% of users with Java   class Solution { public String oddString ( S...