Tag cloud (weighted list) ya da Türkçe olarak sözcük bulutu/agirlikli liste, daha çok blog sitelerinde birbiriyle ilgili içeriklere çabuk ulasimi saglayan ve 2005 yilindan bu yana internette günlük tutanlar tarafindan yaygin bir sekilde kullanilan görsel bir yardimci. Genel olarak, sitenin içeriklerinde geçen kelimelerin / kelime gruplarinin ya da içerigi kategorilendirirken olusturulan iliskili kelimelerin tüm içeriklerde kaç defa geçtigi hesaplanip, tüm site bazindaki agirlikli ortalamalar alinip görsel olarak kullanicilara gösterilmesini amaçlaniyor. Tag cloud olustururken kullanilan degisik yaklasimlara güzel bir örnek de (birbiriyle iliskili kelimelere yönelik hesaplamalar) University of New Brunswick` den Owen Kaser ve Université du Québec à Montréal` den Daniel Lemire tarafindan hazirlanan TagCloud Drawing: Algorithms for Cloud Visualization isimli çalismada görülebilir.
mirmirik.net sitesinin bir önceki sürümünü yaparken basit bir tag cloud eklemek ama bunu da agir matematiksel algoritmalara dayandirmadan hizli bir sekilde yapmak istedim. Bunu olusturmak için kullandigim kodlari ve veritabani yapisini, bu yazinin ilerki satirlarinda paylasiyor olacagim.
Veritabani:
Ilk önce eski veritabani yapisina su sekilde ufak bir eklemede bulundum:
SELECT CT.SUBJECT_ID, C.SHORTDESC, COUNT(CT.CONTENT_ID) AS FNSIZE
FROM TBL_SUBJECT_CONTENT_MAP CT, TBL_SUBJECTS C
WHERE CT.SUBJECT_ID = C.SUBJECT_ID
GROUP BY CT.SUBJECT_ID, C.SHORTDESC
HAVING (COUNT(CT.CONTENT_ID) > 2)
ORDER BY C.SHORTDESC
Bu sorgu su sekilde bir sonuç tablosu döndürmekte:
...
double _fnSize = (double.Parse(_dr['FNSIZE'].ToString()) / 10.0) + 0.5;
_lnk.HrefStyle = 'font-size:' + _fnSize.ToString().Replace(`,`, `.`) + 'em';
...
Bu sayede elinizdeki her kelimenin büyüklügü toplamda kaç içerikte yer aldigina, dogru oranti ile bagli olarak degismis oluyor. Daha fazla yazida geçen kelimenin büyüklügü daha fazla oluyor.
üsenmezsem bir sonraki yazida ajaxPro kullanimi ile ilgili örnek vermeye ve mirmirik.net sitesindeki yorum kisminin nasil yazildigini anlatmaya çalisacagim.