Konu Başlıkları
Yükleniyor...

Filtreler ve Fasetli Gezinme: Asıl Fark Sayımda

Faset ile filtre arasındaki teknik fark ve seçim ölçütü

Filtre ile faset arayüzde benzer görünür, altları aynı değil. Filtre eldeki listeden kayıt eler. Faset, sorgunun eşleştiği kümenin tamamını tarayıp her seçenek için kaç kayıt kaldığını sayar ve o sayıyı ekranda gösterir. Bütün mesele bu sayımdır, bedeli de arayüzde değil veritabanında ödenir.

Filtre eler, faset sayar

Filtre bir koşuldur. “Fiyat 500 altı” seçilir, sorguya bir koşul eklenir, sonuç küçülür, iş biter.

Faset bunun üstüne bir iş daha koyar: açık olan her boyut için, mevcut koşullar altında hangi değerin kaç kaydı olduğunu cevaplar. Marka listesindeki “47” sayısı, o marka henüz seçilmemişken hesaplanmış olmak zorunda. Bu hesap sayfadaki 20 kayıt üzerinden değil, eşleşen kümenin tamamı üzerinden yapılır. Yani beş fasetli bir katalogda tek sayfa gösterimi bir sonuç sorgusu artı beş toplama sorgusu demektir; Solr, Elasticsearch, Typesense gibi araçlarda ayrı bir faset API'si olmasının sebebi de bu, aynı işi SQL tarafında her boyut için ayrı bir GROUP BY ile yazarsın ve indeksler yetişmediğinde ilk şişen yer burası olur.

Sayı yoksa ortada faset yok

Sayıları gizleyip çok seçenekli bir kenar çubuğu koymak fasetli gezinme değil, yan yana dizilmiş filtredir. Kullanıcı açısından fark şu: sayı varsa seçmeden önce sonucu görür, yoksa tıklar ve boş ekrana düşer. İki üç boş ekrandan sonra kenar çubuğuna güveni biter, aramaya döner. Bir ürün kataloğunda fasetleri sonuç sayıları olmadan yayına aldık, iki hafta sonra en çok konuşulan şey boş liste ekranıydı.

Kombinasyon sayısı hızlı patlar

Fasetli gezinmeyi “kapsamlı içerik için şart” diye geçiştiren metinler bir şeyi atlıyor: her yeni faset durum uzayını çarpar. On değerli beş faset düşün, her faset ya seçilmemiş ya da bir değerde: 11 üzeri 5, yani 161.051 ayrı filtre durumu. Çoklu seçime izin verirsen her faset 1024 alt kümeye çıkar ve toplam katrilyon mertebesine taşınır. Bu durumların ezici çoğunluğu sıfır sonuç verir, çünkü kırmızı renk, 46 beden ve tek bir marka aynı anda stokta nadiren bulunur.

Bunun üç pratik sonucu var:

  • Sıfır sonuç veren faset değerini hiç gösterme. Sayımı zaten yaptığın için bu bedava gelir.
  • Tek faset seçili halleri indekslenebilir bırak, çoklu kombinasyonlara noindex ya da canonical koy. Aksi halde arama motoru yüz binlerce varyantı tarar, asıl kategori sayfasına seyrek uğrar.
  • Faset sayısını dar tut. Altıncı fasetin getirdiği daralma, kullanıcının kenar çubuğunu okuma maliyetini genelde karşılamaz.

Hangisi, nerede

Kararı veri yapısı verir, sitenin büyüklüğü değil. Alanlar serbest metinle doldurulmuşsa faset kurmaya çalışmak boşuna: “Kırmızı”, “kırmızı” ve “koyu kırmızı” üç ayrı faset değeri olur, kullanıcı da üç ayrı dar liste görür. Önce o alanları normalize et, faset ondan sonra konuşulur.

İki üç özelliği olan, birkaç yüz kayıtlık bir arşivde düz filtre yeter, faset eklemek sadece bakım yükü getirir. Faset, kullanıcının “başka ne var” sorusunu sorduğu yerde kazanır: stoklu katalog, ilan sitesi, çok etiketli görsel arşivi. Oralarda aradığı asıl bilgi hangi kombinasyonun dolu olduğudur. Sayımı makul maliyetle yapamıyorsan fasete hiç girme; iyi kurgulanmış dört filtre, sayısı olmayan on fasetten daha iyi iş çıkarır.