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

Filtre Tasarımı: Anlık Güncelleme, Facet Sayıları ve URL'ler

Anlık filtre mi, Uygula butonu mu? Facet tasarımında karar noktaları

Bir filtre panelinin işi seçenek sergilemek değil, sonuç kümesini daraltmak. Aynı panel hem aklındaki üç kriteri girip çıkmak isteyen ziyaretçiye hem de neyin var olduğunu görmeye gelen ziyaretçiye hizmet etmek zorunda. Asıl karar şurada: seçim yapıldığı anda mı sorgu atılacak, yoksa kullanıcı bittiğini söyleyene kadar beklenecek mi? Bu kararın bedeli arayüzde değil, sunucu tarafında görünüyor.

Anlık güncelleme mi, Uygula butonu mu?

Keşfe gelen kullanıcı filtreyi deneme aracı gibi kullanır: işaretler, sonuca bakar, kaldırır, başka bir şey işaretler. Bu kullanım için her tıklamada yenilenen liste doğru davranış, çünkü geri bildirim gecikmesi düşünce akışını kesiyor. Hedefi net olan kullanıcı ise üç kriteri sırayla seçip tek bir sonuç sayfası görmek ister; aradaki iki ara sonuç onun için gürültüden ibaret.

Kararı siteniz hızlıysa anlık filtre kullanın tavsiyesine indirgemek eksik kalıyor. Anlık filtrede gecikme bir kez değil, seçim sayısı kadar ödeniyor: dört kriter işaretleyen kullanıcı dört tur atar, toplu filtrede aynı seçim tek tur. 300 ms sorgu süresi tek başına sorun değil, dörde katlandığında paneli yavaş hissettirmeye yetiyor.

Peki kullanıcı kutucukları hızlı hızlı işaretliyorsa? Her tıklamayı ayrı sorguya çevirmek o durumda zaten yanlış; 250-300 ms bekleyip aradaki istekleri iptal etmek hem sunucu yükünü hem de yanıtların sırası karıştığında yanlış liste gösterme riskini düşürüyor. Karma bir yol da işliyor: tek seçimlik facet anında uygulanır, çoklu seçim kutuları Uygula ile. Panelde iki farklı davranışın bulunması, ikisi görsel olarak ayrıştığı sürece kullanıcıyı şaşırtmıyor.

Seçeneğin yanındaki sayı

Panelin en çok işe yarayan parçası çoğu zaman seçeneklerin yanında duran sonuç sayısı. Yanında sıfır yazan bir kutucuk, kullanıcıyı boş sonuç sayfasına girmekten kurtarıyor ve hangi kriterin listeyi tükettiğini de gösteriyor.

Bu sayımları genelde tek bir gruplu sorguyla çözerim, her kutucuk için ayrı sayım atmak yerine. Fark panel büyüdükçe açılıyor: beş facet ve her birinde altı değer varsa, kutucuk başına sorgu modeli sayfa başına otuz ek sorgu demek. Aynı veriyi tek GROUP BY ile alıp bellekte dağıtmak hem daha hızlı hem de önbelleğe alınabilir bir parça bırakıyor.

Sıfır sonuç veren seçeneği panelden kaldırmak yerine devre dışı bırakmak gerekiyor. Kaybolan kutucuk kullanıcıya filtrenin bozulduğunu düşündürüyor, oysa bilgi tam tersi: o seçenek mevcut daraltmayla uyuşmuyor.

Liste yenilenirken kullanıcı nerede kalıyor?

Filtre uygulandığında kaybedilen şey sonuçlar değil, kullanıcının kendi yeri. Sayfa başa kayıyorsa, biraz önce işaretlediği kutucuğu bulmak için yeniden aşağı inmesi gerekiyor.

Yenileme sırasında sonuç alanını soluklaştırıp bir yükleniyor göstergesi vermek yerinde, ama alanın yüksekliği korunmak şartıyla; yoksa panel de birlikte yukarı atlıyor. Klavye odağı işaretlenen kutucukta kalmalı, yeni sonuç sayısı ise ekran okuyucuya canlı bir bölge üzerinden duyurulmalı. Yirmi dört sonuç bildirimi, listeyi göremeyen kullanıcı için tek geri bildirim.

İstisnası var: sonuç sayısı bir elin parmaklarına düştüyse kullanıcıyı listenin başına taşımak faydalı, çünkü aradığı şey artık tek ekranda duruyor. Bunun dışında sayfayı kendi başına kaydırmamak daha iyi.

Filtre URL'leri ve tarama bütçesi

Her filtre kombinasyonunun temiz ve benzersiz bir adresi olsun tavsiyesi kulağa arama motoru dostu geliyor, aritmetiği yapılınca tersine çalışıyor. Beş facet ve her birinde dört çoklu seçilebilir değer varsa facet başına 16 olası durum çıkıyor, hepsi birlikte 16 üzeri 5, yani bir milyonun üzerinde adres. Parametre sırası sabitlenmemişse sayı daha da büyüyor. Bu adreslerin neredeyse tamamı birbirinin kopyası ve tarama bütçesini asıl kategori sayfalarından çalıyor.

Hangi kombinasyonun indekslenebilir olduğunu elle seçmek gerekiyor:

  • Tek facet seçimleri indekslenebilir, çünkü bunlar gerçek arama ifadelerine karşılık geliyor.
  • İki facet birleşimlerinden yalnızca trafiği ölçülmüş olanlar kalır, gerisi canonical ile ana listeye bağlanır.
  • Sıralama, sayfa boyutu, görünüm tercihi gibi parametreler hiç indekslenmez.

Hepsi benzersiz olsun hedefi, benzersiz ama değersiz bir milyon sayfa üretmekten başka iş görmüyor. Filtre panelinde alınan kararların hepsi aynı yere bakıyor: kullanıcıya her tıklamada ne kadar beklettiğiniz ve bir sonraki adımı görmesi için neyi ekranda bıraktığınız.