»
İyi bir kategorilendirme sistemi nasıl olmalı?
|
| Sunucu Tabanlı Programlama (Server Side) Perl/CGI, PHP, ASP, JSP, .NET ve diğer programlama dilleri hakkındaki sorularınıza, paylaşmak istediklerinize ve örnek kodlara bu alanda yer verebilirsiniz. |
![]() |
|
|
LinkBack | Seçenekler |
|
|
#1 (permalink) |
|
Üyelik Tarihi: 15.11.2006
Yer: Konya
Mesaj: 27
|
İyi bir kategorilendirme sistemi nasıl olmalı?
Bir alış-verişi yapmak istiyorum. Deneme amaçlı fakat ileriye hazırlık olsun diye. Kategorilendirme de takıldım. Hem de fena çuvalladım. Kategorileri veritabanında tutmayı düşünüyorum. Fakat aralarında nasıl ilişki kuracağımı bilmiyorum Örneğin; bilgisayar -> Donanım -> Taşınabilirler -> Dizüstü bilgisayarlar -> HP modelleri -> Pavilion serisi -> DV6103EU Gördüğünüz gibi kategoriler oldukça içiçe Veritabanında buna nasıl bir çare bulunabilir? Yoksa Array'lar ile mi yapılsa iyi olur? Lütfen kafayı yemeden önce bu konuda fikirlerinizi paylaşınız
|
|
|
|
|
|
#2 (permalink) |
|
Üyelik Tarihi: 30.11.2000
Yer: Bursa
Yaş: 20
Mesaj: 809
|
Re: İyi bir kategorilendirme sistemi nasıl olmalı?
Kategoriler tablonuzda kategorinin "ana" kategorisini tutan bir alan tanımlayabilirsiniz. Tabii ki bu alan o kategorinin "numarasını" tutmalıdır.
Örnek olarak bir tablo şu şekilde olabilir: id: kategoriye otomatik verilen numara isim: kategorinin ismi ana_id: kategorinin ana kategorisi (eğer 0 ise kendisi bir ana kategoridir) örnek veri: Kod:
id isim ana_id
1 bilgisayar 0
2 elektronik 0
3 donanım 1
4 yazılım 1
5 antivirüs 4
Ruby On Rails ile nasıl yapıldığına dair bir döküman hazırlamıştım. Mantık olarak aynı yapı diğer dillere de eklenebilir. Yazdırmak için "rekürsif" bir fonksiyon oluşturabilirsiniz.
__________________
muarifer » ruby, rails, postgresql, yazılım geliştirimi falan... |
|
|
|
|
|
#3 (permalink) |
|
Üyelik Tarihi: 02.08.2001
Yer: istanbul
Yaş: 38
Mesaj: 1,542
|
Re: İyi bir kategorilendirme sistemi nasıl olmalı?
bu anlatılan zaten rekursif kategorilendirme... hiyerarşik (dallanan) sistemlerin dezavantajı, çok detaylı tanımlamalarda insanı usandıracak kadar derinlere gitmesi. bir ürün bulmak için 8 ara sayfa geçmek şart mı?
ben daha serbest tanımlanmış modellere ilgi duyuyorum. tagset sistemini kategori tanımlamak için kullanmak mümkün, ama tek başına o da yeterli kalmaz, ajax bazlı arama olursa anca güzel olur. izleyicinin rahat kullanacağı, sıkılmayacağı bir sistem için tanımlamayı abartmamak gerekir. o yüzden de hiyerarşik bir sistem kullanılacaksa, 2-3 ürün için yeni kategoriler açmaktan kaçınmak gerekir. not: rekursif sistem kullanılacaksa, aynı anda kullanacak kişi miktarı ile derinlik ve yatay genişlikler önemli bir rol oynuyor. sebebi de rekursif sistemlerin hafızadan öbek öbek ram yemesi; rekursiyona girildiğinde her derinlik için tüm değerler ayrı bir yerde tutulur, bir sonraki derinliğe inilir, yeni değerler orada da hafızaya atılır... ta ki son derinliğe gidilene kadar. ancak o noktadan sonra geriye dönüşte tüm bu ayrılan hafıza parçacıkları serbest bırakılır. böyle bir kodun 30-40 kişiye aynı anda hizmet vermesi sorun yaratmayabilir, ama aynı anda 300-500 kullanıcı varsa sistemde ve sunucunun hafızası da sınırlıysa, kısa sürede ssunucunun şişmesine, bununla paralel oalrak da kendisine gelen talepleri daha yavaş işlemesine sebep olur. |
|
|
|
|
|
#4 (permalink) |
|
Üyelik Tarihi: 15.11.2006
Yer: Konya
Mesaj: 27
|
Re: İyi bir kategorilendirme sistemi nasıl olmalı?
Arkadaşlar beni maruz görün. Daha önce bu konuda bir tecrübem olmadığı için söylediklerinizi anlamakta güçlük çekiyorum. Rekürsif yapıları biliyorum fakat bunları benim bahsettiğim kategori sistemine uygulamakta zorluk yaşıyorum.
Yukarıda yazdığım kategoriyi alttaki gibi soy ağacına dönüştürdüm. Konuyla iligi bir de makale buldum. http://www.sitepoint.com/article/hie...data-database/ adresinde makaleden ne yazık ki bir sonuç çıkaramadım. Öğrendiğim tek şey Rekürsif fonksiyonların yavaşlığı oldu. Makalede Rekürsif yapıların kullanılmaması gerektiği söyleniyor. |
|
|
|
|
|
#5 (permalink) |
|
Üyelik Tarihi: 30.11.2000
Yer: Bursa
Yaş: 20
Mesaj: 809
|
Re: İyi bir kategorilendirme sistemi nasıl olmalı?
İlk mesajımda belirttiğim gibi bir yapı kurabilirsiniz. Biraz daha açıklayıcı olmak gerekir ise;
Kategorilerin hepsinin bir üst kategorisi olabileceğini düşünerek işlem yapacağız. Her kategorinin bir üst kategorisini bilmek en baştaki kategoriyi bulana kadar bize yardımcı olacaktır. Çünkü 5 nolu kategori 4 ün alt kategorisi ise 4 de 3 ün ise.. gibi. Bunu bulana kadar bahsettiğiniz gibi "rekürsif" fonksiyon kullanabiliriz. (yavaş olduğu doğrudur.) Sizin verdiğiniz örneği tabloya çevirirsek bilgisayar(1), Müzik(2), Oyuncak(3) Ana Kategori (0) Donanım(4), Yazılım(5) => bilgisayarın Alt Kategorileri (1) Dizüstü(6) => bilgisayar/Donanımın Alt Kategorisi (4) Dizüstü 4 numaralı kategoriye ait (Donanım), Donanım ise 1 numaralı kategoriye ait (bilgisayar) bilgisayar ise ana kategori (0'a ait) Örneğin bir fonksiyon düşünün; verilen kategori numarasındaki kayıtı bulup "ana_id" değeri 0 olana kadar kendi kendini çalıştırsın. Kod:
def kategori_yaz(kat) # kayıtı bul # kaydın "ana_id" değeri 0 dan farklı ise # bu fonksiyonu değer olarak "ana_id" şeklinde yeniden çalıştır # kategori_yaz(ana_id) gibi. end gibi.
__________________
muarifer » ruby, rails, postgresql, yazılım geliştirimi falan... |
|
|
|
|
|
#6 (permalink) |
|
Re: İyi bir kategorilendirme sistemi nasıl olmalı?
bilgisayar 1
Cep Telefonu 2 Beyaz Eşya 3 Dizüstü bilgisayar 1.1 Nokia 2.1 Hp Laptop 1.1.1 Hp Pavillion 1.1.1.3 Daha sonra "." lar split ile yakalanıp bişeyler yapılabilir. |
|
|
|
|
|
|
#7 (permalink) |
|
Üyelik Tarihi: 30.11.2000
Yer: Bursa
Yaş: 20
Mesaj: 809
|
Re: İyi bir kategorilendirme sistemi nasıl olmalı?
Kategorinin değiştiğini düşünürseniz tamamını değiştirmek oldukça yorucu olacaktır. Örneğin donanımın bilgisayardan ayrılıp ayrı bir kategori haline gelmesi.
__________________
muarifer » ruby, rails, postgresql, yazılım geliştirimi falan... |
|
|
|
|
|
#8 (permalink) |
|
Üyelik Tarihi: 15.11.2006
Yer: Konya
Mesaj: 27
|
Re: İyi bir kategorilendirme sistemi nasıl olmalı?
@Muafier
Öncelikle ilgilendiğin için teşekkürler. Biraz bişi anladım ![]() - Yalnız senin dediğin yapı ileride sorun çıkarır mı? - Ben kategorilerde istediğim gibi değişiklik yapabilir miyim? - İstediğim an, istediğim bir kategoriyi başka bir kategoriye bağlayabilir miym? - Bu işlemleri yaptığımda ağaç (tree)'ın yapısı bozulmaz mı? Bir de http://www.sitepoint.com/print/hiera...-data-database adresindeki makale için ne düşünüyorsun? Örneğin adam Modified Preorder Tree Traversal isimli bir yöntem kullanmış. Rekürsif yöntemine göre daha esnek ve hızlı olduğunu söylüyor. Fakat bahsettiği yapıyı çözemedim. Adam ağaca sağlı-sollu numaralar veriyor. Fakat bunu nasıl yapıyor anlamadım
|
|
|
|
|
|
#9 (permalink) |
|
Üyelik Tarihi: 30.11.2000
Yer: Bursa
Yaş: 20
Mesaj: 809
|
Re: İyi bir kategorilendirme sistemi nasıl olmalı?
Dediğim olay sorun çıkarmaz. Örneğin Donanım kategorisi bilgisayara bağlı ise (yani 1'e bağlı ise) Donanımı alıp bilgisayardan çıkartmak için sadece ana_id'sini değiştireceğiz. Örneğin 0 yaparsak kendisi bir ana kategori olacaktır. Dikkat ederseniz donanımın alt kategorilerine hiçbir işlem yapmadık, çünkü alt kategoriler "donanımın" "id" alanına göreydi. Ne ismiyle ne ana kategorisiyle işimiz yoktu.
Yani; bir kategoriyi başka bir kategoriye bağlamak için sadece "ana_id" değerine bağlamak istediğiniz kategoriyi yazmanız yeterli olacaktır (Eğer ana kategori olacak ise 0 yazılacak.) Verdiğiniz bağlantıdaki olaya göz ucuyla baktım sanırım sağlı sollu değer vererek aradaki değerlere sahip kayıtları almış. Yani örneğin id'de 1 ile 18 arasında bilgisayar ürünlerini, 2 ile 4 arası bilgisayarın donanım kategorileri gibi. Bunları da SQL deki BETWEEN komutu ile alıyor. Yani tüm bilgisayar kategorilerini bulmak için 1 ile 18 diyor (1 ile 18'i left ve right sütunlarından buluyor) Yeni kayıt eklenince tabii bu değerleri de genişletmek gerekiyor. Bence daha zahmetli bir yol. Oldukça fazla kategori altında örneğin 1000 tane alt kategori olunca yeni bir kategoriyi araya eklemek için 900 tane kaydı güncellemek gerekecek vs. Özetlemek Gerekirse: - Bir kategoride sadece bir üst kategorinin değeri tutulduğu için üst kategoriyi alıp bir yere taşıdığımız zaman alt kategoriler için herhangi bir işlem yapmamız gerekmeyecek. - Kategori ismi değiştiği zaman herhangi bir sorun çıkarmayacak (Çünkü bizim işimiz otomatik olarak verilen numarayla) - İstediğimiz an bir kategoriyi tüm alt kategorileriyle birlikte başka bir kategoriye aktarmak için yapacağımız tek şey "ana_id" alanının güncellemek olacak - Üstelik bunlar ağaç yapısına hiçbir zarar vermeyecek.
__________________
muarifer » ruby, rails, postgresql, yazılım geliştirimi falan... |
|
|
|
Zoque'a hoşgeldiniz!|
En popüler ilk 100 etiket
Tag Cloud
|
| acil adsl ajax almak arama araniyor ariyorum ariyoruz asp bilen bilgi bilgisayar blog calisma canon css div domain dosya eleman film firefox flash font form forum fotograf freelance google gore grafik grafiker hakkinda hangi hata hatasi hosting html ilgili ilk image internet istanbul istiyorum java javascript karakter kayit kisisel kullanimi link logo mac mail menu muzik mysql nasil neden nedir online oyun photoshop php problemi program programi reklam resim satilik sayfa script server |