Shopify mağazalarında arama kutusu, sayfanın en çok kullanılan ama en az bakılan parçasıdır. Tema kurulur, koleksiyonlar düzenlenir, ödeme akışı test edilir; arama kutusu ise "zaten çalışıyor" varsayılır. Oysa arama kutusunu kullanan ziyaretçi, kataloğa göz atan ziyaretçiden farklıdır: ne istediğini bilir ve yazacak kadar da ister. Bu yüzden aramanın başarısız olduğu her sorgu, sıradan bir hata değil, en nitelikli trafiğin kaybedildiği andır.

Bu yazıda Shopify'ın varsayılan aramasının nerede yeterli olduğunu, nerede ve neden tıkandığını, kendi kataloğumuzda ölçtüğümüz gerçek sayılarla anlatıyoruz. Ardından çözümün üç katmanını ele alıyoruz: harf benzerliğine dayalı eşleştirme, etiket ağırlıklandırma ve anlam tabanlı arama.

Shopify'ın varsayılan araması ne yapar?

Shopify'ın site içi araması iki ayrı yerde görünür ve ikisi aynı şey değildir:

  • Öneri araması (predictive search): Ziyaretçi yazarken açılan küçük öneri listesi. Hızlıdır, sınırlı sayıda sonuç gösterir.
  • Arama sonuç sayfası: Enter'a basıldığında gidilen /search?q= adresi. Sayfalama, filtreleme ve sıralama burada yaşar.

Her ikisi de ürün adı, açıklama, etiket, ürün tipi ve marka gibi alanlarda eşleşme arar. Eşleşme mantığı temelde kelime kökü ve ön ek üzerine kuruludur: yazdığınız kelime bir ürün alanındaki kelimenin başıyla örtüştüğünde sonuç gelir. Bu, kataloğu düzgün yazılmış ve müşterinin ürün adını doğru bildiği durumlarda gayet iyi çalışır.

Sorun, bu iki koşuldan biri bozulduğunda başlar.

Birinci sorun: tek harf, sıfır sonuç

Ön ek eşleşmesinin doğal sonucu şudur: kelimenin başını doğru yazarsanız bulunur, ortasını yanlış yazarsanız bulunmaz. Müşteri ise ürün adını çoğu zaman duyduğu gibi yazar.

Kendi müşteri kataloğumuzda (bir parfüm mağazası, LOVE TRAP adlı ürün) ölçtüğümüz davranış:

YazılanVarsayılan aramada sonuç
love trapGelir
loke trapGelir
loke tGelmez
lofveGelmez

Üçüncü ve dördüncü satır, sorunun tam olarak ne olduğunu gösteriyor. Ziyaretçi ürünü biliyor, adını neredeyse doğru yazıyor ve karşısına "sonuç bulunamadı" çıkıyor. Bu ziyaretçi çoğunlukla ikinci bir deneme yapmaz; siteden çıkar.

Burada altını çizmek gerekir: bu bir Shopify kusuru değil, bir tasarım tercihidir. Ön ek eşleşmesi hızlıdır ve yanlış sonuç üretme riski düşüktür. Yazım hatası toleransı ise doğası gereği daha maliyetli ve daha risklidir — yanlış ayarlandığında alakasız ürünleri listeler. Shopify güvenli olanı seçmiştir; mağaza sahibi olarak sizin ihtiyacınız farklı olabilir.

Çözümün birinci katmanı: harf benzerliği (trigram)

Yazım hatasını affeden aramanın klasik yolu, kelimeleri bütün olarak karşılaştırmak yerine üçer harflik parçalara bölüp bu parçaların ne kadarının örtüştüğüne bakmaktır. "lofve" ile "love" kelimelerinin üçlü parçaları büyük ölçüde aynıdır; dolayısıyla ikisi birbirine benzer sayılır.

Bu noktada çoğu kurulumun düştüğü ve bizim de ölçerek gördüğümüz bir tuzak var: benzerliğin neyle karşılaştırıldığı. Sorguyu ürün adının tamamıyla karşılaştırırsanız, uzun ürün adlarında kısa sorgu kaçınılmaz olarak düşük puan alır:

Karşılaştırma yöntemi"lofve" ile "LOVE TRAP - Eau De Parfum" puanı
Tüm dizgiyle karşılaştırma0,111
Eşleşen bölümle karşılaştırma0,375

Aradaki fark üç kattan fazla ve doğru ürünün elenip elenmemesini tek başına bu belirliyor. Ürün adı uzadıkça (marka + ürün + hacim + tip) ilk yöntem giderek daha çok doğru sonucu eler. Bu yüzden karşılaştırma, sorgunun ürün adı içindeki en iyi eşleşen bölümle yapılmalıdır.

İkinci sorun: doğru bulur ama fazlasını da getirir

Yazım hatası toleransını açtığınızda yeni bir sorun doğar ve bu sorun ilkinden daha sinsidir: arama artık sonuç bulur, ama alakasız sonuçları da beraberinde getirir.

Sebebi etiketlerdir. Etiketler arama için değerli bir sinyaldir — müşterinin ürün adını değil özelliğini yazdığı durumları etiketler kurtarır. Ancak bir yazım hatası, kataloğun yarısında bulunan yaygın bir etikete benzediğinde, arama sessizce bir kategori taramasına dönüşür. Ziyaretçi tek bir ürün ararken karşısına on dokuz ürün çıkar ve arama "bozuk" görünür.

Bu noktada akla gelen ilk çözüm bir eşik koymaktır: "etiket benzerliği 0,72'nin altındaysa sayma" gibi. Bu çözümün sorunu, seçilen sayının tek bir mağazanın verisine bakılarak belirlenmiş olmasıdır. Etiketleme alışkanlığı farklı bir katalogda aynı sayı ya çok gevşek ya çok katı kalır ve her müşteride yeniden ayar yapmak gerekir.

Çözümün ikinci katmanı: etiketi nadirliğine göre tartmak

Daha sağlam yaklaşım, sabit bir eşik koymak yerine her etiket teriminin kataloğun ne kadarında geçtiğine bakmaktır. Mantık sezgisel: bir etiket ne kadar yaygınsa, o etikete takılmak o kadar az şey anlatır.

Aynı parfüm kataloğunda ölçtüğümüz ağırlıklar:

EtiketKaç üründe geçiyorAğırlık
versace eros11,000
erkek190,338
muadil480,190

Böylece nadir bir etikete isabet eden sorgu tam puan alırken, kataloğun yarısında bulunan bir etikete takılan yazım hatası sonucu bastıramaz. En önemlisi, bu ağırlıklar kataloğun kendisinden hesaplanır; yeni bir mağazada elle ayar yapmak gerekmez. Etiketleme alışkanlığı ne olursa olsun sistem kendini ona göre kalibre eder.

Alan ağırlıkları (ürün adı > etiket > açıklama) ise veriye değil anlama dayanır: ürün adıyla eşleşmek her mağazada açıklamayla eşleşmekten güçlü bir sinyaldir ve bu katalogdan bağımsızdır.

Üçüncü sorun: müşteri ürün adını hiç bilmiyor

Şimdiye kadar anlatılan her şey, müşterinin ürünü bir şekilde adlandırmaya çalıştığı durumlar içindi. Ama bazı ziyaretçiler ürün adını hiç bilmez; ne aradığını tarif eder:

  • "akşam için ağır ve kalıcı bir koku"
  • "ofiste rahatsız etmeyecek hafif parfüm"
  • "hediye için şık kutulu set"

Bu sorgularda harf benzerliği hiçbir işe yaramaz, çünkü ortada eşleşecek bir ürün adı yoktur. Burada gereken şey anlam: sorgunun ve ürün açıklamalarının kelimeleriyle değil, taşıdıkları anlamla eşleştirilmesi.

Çözümün üçüncü katmanı: anlam tabanlı arama — ama her zaman değil

Anlam tabanlı arama, metinleri sayısal vektörlere çevirip birbirine anlamca en yakın olanları bulmaya dayanır. Güçlüdür, ancak iki gerçek maliyeti vardır: her sorgu için bir vektör üretilmesi gerekir (dış servise gidiş-dönüş, yaklaşık 100-300 ms) ve bu istek ücretlendirilir.

Arama kutusunun her tuş vuruşunda çalıştığı düşünülürse, her sorguda anlam katmanına gitmek hem yavaş hem pahalı bir kurgudur. Bizim tercihimiz katmanları birbirinin yerine değil sırayla kullanmak:

  1. Önce harf benzerliğine dayalı katman çalışır. Sorguların büyük çoğunluğu burada çözülür ve ek maliyet üretmez.
  2. Anlam katmanı yalnızca iki durumda devreye girer: sonuç yetersiz kaldığında ya da sorgu tarif edici olduğunda (üç ve daha fazla kelime, kullanıcının bir ürün adı değil bir nitelik anlattığının işareti).

Pratik sonuç şu: "erkos" veya "verkase" yazan bir ziyaretçi için anlam katmanına hiç gidilmez — o bir yazım hatasıdır ve harf benzerliği zaten çözer. "kadınlara çekici gelecek parfüm" yazan ziyaretçi için gidilir.

Sıfır sonuç yerine öneri

Bütün katmanlara rağmen sonuç bulunamayan sorgular olacaktır. Burada "sonuç bulunamadı" yazıp durmak, ziyaretçiyi çıkışa yönlendirmektir. Bunun yerine kataloğun kendi kelime dağarcığından en yakın karşılık önerilebilir:

erkos → Eros mu demek istediniz?

Önerinin işe yaraması için iki ayrıntı önemli: öneri arama kutusunun hemen altında ve yazılan metinden büyük puntoda durmalı (sayfanın dibinde küçük bir not olarak görülmüyor), masaüstünde Tab tuşuyla kabul edilebilmeli ve mobilde dokunulabilir olmalı. Öneriyi görmeyen ziyaretçi için öneri yok demektir.

Arama sonuç sayfasını devralmak

Öneri listesi iyileştirildiğinde iş yarım kalır: Enter'a basan ziyaretçi Shopify'ın kendi /search sayfasına gider ve orada yine varsayılan sıralamayı görür. Kendi sıralamanızın geçerli olması için bu sayfanın da devralınması gerekir.

Devralmada dikkat edilecek üç nokta:

  • Geçiş perdelenmeli. Aksi halde mağazanın kendi sonuç listesi bir an görünür, sonra sizin listeniz onun yerini alır. Ziyaretçi iki farklı liste görmüş olur ve bu güven kaybettirir.
  • Perde zaman aşımıyla korunmalı. Bir aksaklıkta perde kalkmazsa sayfa boş kalır. Perde, kendi listeniz gelmese bile birkaç saniye içinde mutlaka kaldırılmalıdır.
  • Sayfa tam bir sonuç sayfası olmalı. Ürün adı, fiyat, indirim oranı, ürüne gitme ve mümkünse sepete ekleme; sıralama menüsü, filtreler ve sütun sayısı seçimi. Yalnızca görsel dizen bir ızgara, devraldığınız sayfayı mağazanın kendi sayfasından geriye götürür.

Neyi ölçmeli?

Arama iyileştirmesi "daha iyi hissettiriyor" ile değerlendirilemez. Bakılması gereken dört sayı:

ÖlçümNeden önemli
Sıfır sonuç oranıDoğrudan kaybedilen nitelikli trafik. İyileştirmenin en net göstergesi.
Arama sonrası tıklama oranıSonuç geliyor ama doğru mu? Düşükse sıralama alakasız demektir.
Arama yapanların dönüşüm oranıGenelde site ortalamasının belirgin üstündedir; aradaki fark aramanın değerini gösterir.
En çok aranan sıfır sonuçlu terimlerHem arama ayarı hem katalog için yol gösterir: talep var, ürün yok.

Son satır çoğu zaman en değerlisidir. Sürekli aranıp bulunamayan bir terim, bir arama sorunu olmayabilir — kataloğunuzda gerçekten eksik olan bir ürünün habercisi olabilir.

Sık yapılan hata: kataloğu eksik senkronlamak

Kendi kurulumlarımızdan çıkan bir uyarıyla bitirelim. Bir mağazada arama "kötü çalışıyor" diye incelemeye başladığımızda sorunun arama algoritmasında değil veride olduğunu gördük: mağazanın 55 ürününün yalnızca 19'u senkronlanmıştı.

Sebep sessiz bir kimlik doğrulama hatasıydı. Mağazada iki farklı erişim yöntemi tanımlıydı; kod bunlardan birini koşulsuz tercih ediyor, o yöntem yetki hatası veriyor ve diğerine düşülmüyordu. Senkron işi "tamamlandı" raporluyordu, çünkü katalog yenileme adımı en iyi çaba olarak işaretlenmişti ve başarısızlığı işi düşürmüyordu.

Buradan çıkan iki ders var. Birincisi: arama ancak gördüğü ürünü bulabilir; bir arama sorununu incelemeye her zaman "kaç ürün senkronlandı" sorusuyla başlayın. İkincisi: en iyi çaba adımları bile sessizce başarısız olmamalı, en azından uyarı bırakmalıdır.

Özet

Shopify'ın varsayılan araması, müşterinin ürün adını doğru yazdığı durumlar için tasarlanmıştır ve o durumda iyi çalışır. Gerçek kataloglarda ise müşteri ürün adını yanlış yazar, adını hiç bilmez ya da bir nitelik tarif eder. Üç katman bu üç durumu karşılar:

  • Harf benzerliği yazım hatasını affeder — eşleşen bölümle karşılaştırmak koşuluyla.
  • Nadirlik ağırlığı etiket eşleşmesinin aramayı kategori taramasına dönüştürmesini engeller ve kendini her katalogda otomatik ayarlar.
  • Anlam katmanı ürün adı geçmeyen tarif edici sorguları çözer; her sorguda değil, yalnızca gerektiğinde çağrılır.

Bunların üzerine devralınmış bir sonuç sayfası ve ölçülen bir sıfır sonuç oranı eklendiğinde arama, mağazanın en çok kullanılan ama en az bakılan parçası olmaktan çıkıp dönüşümü doğrudan etkileyen bir bileşene dönüşür.