Soundex Alternatif

Acoupotan

Forum Üyesi
22 Eyl 2022
166
0
0
Egypt
Merhabalar,

Bir ihtiyaca bineaen dün yazdığım soundex alternatifi, kelimelerin*benzeşme oranını bulan fonksiyonumu incelemek, eleştirmek ve katkıda bulunmak isterseniz düşüncesiyle burada paylaşıyorum. Fonkisyonun sonucu yüzdesel benzeşme oranını temsil ediyor.
@engkarsilastir parametersi ile seçeneğe bağlı olarak*türkçe karakterleri eng ile*değiştirip daha yakın sonuçlar elde etmeyi planladım.
Yaklaşım olarak pozitivist bir yaklaşım sergiledim.*
Dönen resultsette order by descending*ile benzeşme oranına göre*paging yaparak belli bir adet kaydı çekiyorum uygulamama.
Yada Filitrenizin*benzeşme oranına göre tabloyu sorgulayabilirsiniz. Örneğin benzeşme oranı %70 ve üzeri sorgulanabilir.
Performansı Nasıl ki ?;
sunucu İşletim sistemi, sunucu donanım ve*mimarisi,*sql serverın*versiyonu ve lisans türü tabiki*sonucu etkilemekle beraber,*
kendi lokal sunucumda 30bin kayıtlık tablomda index-siz bir sütunda*8 saniyede istediğim sonucu getirdi.
Sonuçta bir zaman maliyeti olacağı aşikar,*Gülü seven dikenine katlanır dimi.
Ancak bunu ne kadar aşağıya çekersek kar tabi.
Belki bu topluluğun da katkılarıyla Türkçemize özgü daha güzel bir fonksiyon çıkarabiliriz beraber.

Yaptığım test sonucu aşağıdadır.

aqFNkM.jpg



create function dbo.fn_benzesme( @ara varchar(30), @bul varchar(30) , @engkarsilastir bit )
returns tinyint
as
begin
declare *
@i int = 0,
@harf varchar(1)
if @ara = @bul return 100
if *abs(len(@bul)-len(@ara)) > len(@ara)/2 return 0
if @engkarsilastir = 1
begin
SET @ara = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@ara,'Ð','G'),'Ü','U'),'İ','I'),'Ş','S'),'Ö','O'),'Ç','C')
SET @bul = REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(@bul,'Ð','G'),'Ü','U'),'İ','I'),'Ş','S'),'Ö','O'),'Ç','C')
end
declare @harft table (string varchar(30), harf varchar(1) , INDEX IX1 (string) , INDEX IX2 (harf) )
set @i * = 1
while @i 0 then 75.0
ELSE *0 *end
+ iif(left(@ara,1)=left(@bul,1),25,0)
+ iif(right(@ara,1)=right(@bul,1),15,0)
) */ convert(float,COUNT(*))

from
(
select string,harf,count(*) arasay
from @harft
where string = @ara
group by *string,harf
) bul
full outer join
(
select string,harf,count(*) bulsay
from @harft
where string = @bul
group by *string,harf
) string on string.harf = bul.harf
SET @i = ISNULL(@i,0)
return CASE when @i=100 then 99 else @i end
end
go
DECLARE @T TABLE(ara varchar(30) , bul varchar(30))
INSERT INTO @T VALUES ('SADULLAH','ABDULLAH'),('HAKAN','HASAN'),('İSTANBUL','ISTAMBUL'),('SMAIL','İSMAİL'),('ŞEYMA','SEYMA'),('ALİ CAN','QALI ÇAN'),('FADİME','FATIMA'),('OSMANLI','OSMANCIK'),('KAYIHAN','AYHAN'),('AYŞE','ASYA'),('GELİVER','GELDİM')
SELECT * , dbo.fn_benzesme(ARA,BUL , 0) TRK, dbo.fn_benzesme(ARA,BUL , 1) ENG , DIFFERENCE(ARA,BUL) SOUNDEX_ FROM @T
 

Genel Forum

Türkçe Forum Siteleri

İnternette bilgi paylaşımı ve tartışma ortamı arayanlar için forum siteleri uzun yıllardır popüler bir tercih olmuştur. Her yaştan ve ilgi alanından kullanıcıya hitap eden genel forum siteleri, teknoloji, oyun, kültür ve daha pek çok konuda geniş içerik sunmaktadır. Bu platformlar, katılımcıların hem öğrenme hem de eğlenceli vakit geçirme ihtiyaçlarını karşılamaktadır.

Genel Forum Sitesi

İnternette Türkçe forumlar üzerinden içerik paylaşmak, dil bariyerini ortadan kaldırarak yerel kültüre uygun bir deneyim sunar. Türkçe forum siteleri, kullanıcıların bilgiye kolayca ulaşabileceği, aynı zamanda sosyal ve eğlenceli paylaşımlar yapabileceği platformlar oluşturur. Türkiye'deki internet kullanıcıları için bu forumlar, ilgi çekici konularda derinlemesine sohbetler sunar.

Genel Forum Siteleri

Günlük hayatın stresinden uzaklaşmak isteyenler için eğlenceli forumlar, keyifli bir alternatif sunar. Farklı hobilere ve ilgi alanlarına yönelik içeriklerle dolu olan bu forum paylaşım siteleri, kullanıcılarına samimi bir ortamda vakit geçirme fırsatı sunarken, aynı zamanda yeni insanlarla tanışma imkanı da sağlar. Eğlenceli paylaşımlar ve interaktif etkinliklerle dolu olan bu platformlar, hem öğrenmeyi hem de keyifli vakit geçirmeyi bir arada sunar.

İnternette yeni bir topluluk arayan ya da bilgi alışverişi yapmak isteyenler için genel forum siteleri harika bir başlangıç noktasıdır. Geniş bir kullanıcı kitlesine hitap eden Türkçe forumlar, herkesin ilgisini çekecek konularla doludur. Siz de bu platformlara katılarak, kendi ilgi alanlarınıza uygun başlıklarda sohbetlere katılabilir ve katkıda bulunabilirsiniz. 

Not : Lütfen Çekim Paylaşım Forumları için sitemizi kullanmayın.

Üst