Çoğu işletme sahibi arama kutusunu bir "detay" sanır. Ürünler panelde duruyorsa, müşteri yazınca da çıkar diye düşünür. Oysa e-pin satışında arama kutusu vitrinin kendisidir: senin sitene gelen insan katalog gezmez, oynadığı oyunun adını yazar ve iki saniye içinde sonucu görmek ister. Görmezse siteni "stokta yok" diye etiketler ve rakibine gider. En acı kısmı da şu: ürün gerçekten orada, stokta, fiyatı da doğru. Sadece sorgu onu görmüyor.
Bu yazıda "arama çalışmıyor" gibi bulanık bir şikayeti, tek tek doğrulanabilir teknik nedenlere ayıracağız. Bir e-pin scripti ya da genel bir dijital ürün satış scripti kullanıyor olman fark etmez; eksik dönen sonuçların arkasında neredeyse her zaman aynı dört-beş sessiz suçlu vardır. Ve hepsi, bir insan raporlamadığı sürece hiçbir hata kaydı üretmez. İşte bu yüzden aylarca farkına varmadan ciro kaybedebilirsin.
Arama kutun bozuk değil, senin sorgun yanlış soruyu soruyor
Eksik sonuç dediğimizde akla ilk gelen şey arama motorunun çökmesi olur. Gerçek çok daha sıkıcı: sorgu çalışıyor, sadece yanlış küme üzerinde çalışıyor. Tipik bir e-pin satış scriptinde arama sorgusu ürün adı üzerinde bir LIKE taraması yapar. Fakat müşteri ürün adını senin yazdığın gibi yazmaz. Sen "Valorant VP 1000" yazmışsındır, o "valorant 1000 vp" yazar. Kelime sırası değiştiği anda tek parça LIKE eşleşmesi çöker, çünkü "%valorant 1000 vp%" diye bir dizgi veritabanında yoktur.
Çözüm karmaşık değil ama bilinçli olmalı: sorguyu boşluklardan parçalayıp her kelimeyi ayrı bir koşul olarak aramak, yani sözcük bazlı AND mantığı kurmak. Böylece "valorant" ve "1000" ve "vp" ayrı ayrı eşleşir, sıra önemsizleşir. Bunun üstüne bir de takma ad tablosu eklersen (VP için "vp, valorant points, riot point"), müşterinin kafasındaki isimle senin katalogundaki isim arasındaki boşluğu kapatmış olursun. İyi bir epin yazılım altyapısında bu eşanlamlı listesi panelden yönetilebilir olmalı, koda gömülü kalmamalı.
Türkçe karakter ve collation: "pubg" arayan neden "PUBG"yi bulamıyor?
Türkçe, veritabanı aramasında gerçek bir mayın tarlasıdır. Büyük İ ile küçük i, noktasız ı ile noktalı i arasındaki ilişki pek çok karşılaştırma kuralında beklediğin gibi çalışmaz. Tablon utf8mb4_general_ci ile kurulmuşsa "ı" ve "i" bambaşka iki harf gibi davranır; kullanıcı "bıgo" yazınca "Bigo" ürünü gelmez. Daha da sinsisi, tek bir kolonun farklı bir collation ile oluşturulmasıdır: o kolona yapılan JOIN sessizce yavaşlar veya eşleşmeyi tamamen kaçırır.
Kalıcı çözüm, arama için ayrı bir normalize edilmiş kolon tutmaktır. Ürün kaydedilirken adını küçük harfe indir, Türkçe karakterleri ASCII karşılığına çevir (ı→i, ş→s, ğ→g, ü→u, ö→o, ç→c), noktalama ve fazla boşlukları sil, sonucu bu kolona yaz. Arama sorgusunu da aynı fonksiyondan geçirip bu kolonda ara. Artık müşterinin klavyesi, dili ya da özensizliği seni ilgilendirmez; iki taraf da aynı dile çevrilmiştir. Bu, bir dijital ürün satış yazılımında yapabileceğin en yüksek getirili tek dokunuştur.
| Belirti | Muhtemel teknik neden | Nasıl doğrularsın |
|---|---|---|
| Tam ad yazınca gelir, kelime sırası değişince gelmez | Tek parça LIKE, sözcük bazlı arama yok | Sorguyu logla, üretilen SQL'i incele |
| Türkçe karakterli isimler hiç bulunmuyor | Collation uyuşmazlığı, normalize kolon yok | SHOW FULL COLUMNS ile kolon collation'ını kıyasla |
| Kısa aramalar (vp, pb, uc) boş dönüyor | Tam metin indeksinin minimum token uzunluğu | innodb_ft_min_token_size değerini oku |
| Ürün panelde var, aramada yok | Stok veya durum filtresi ürünü dışlıyor | Filtreleri kaldırıp aynı sorguyu çalıştır |
| Bazı ürünler hiçbir aramada çıkmıyor | INNER JOIN ile eksik kategori/ilişki kaydı | LEFT JOIN'e çevirip NULL satırları say |
| Yeni eklenen ürün 10 dakika görünmüyor | Arama sonucu önbelleği temizlenmiyor | Önbelleği boşalt, sonucu tekrar test et |
Üç harften kısa kelimeyi neden hiç göremiyorsun?
E-pin dünyası kısaltma cennetidir: VP, UC, PB, CP, RP, TL. Tam metin indeksi kullanan bir kurulumda bu kelimelerin hiçbiri aranamaz, çünkü veritabanı motorları varsayılan olarak belirli bir harf sayısının altındaki kelimeleri indekse hiç almaz. InnoDB'de bu eşik üç harftir. Yani "uc" yazan müşterin için senin sitende PUBG UC diye bir ürün yoktur. Hata mesajı da yoktur; sadece bomboş bir sonuç sayfası.
Burada iki yol var. Birincisi motor ayarını düşürüp indeksi yeniden kurmak; paylaşımlı hostingte bu genelde mümkün olmaz. İkincisi ve daha sağlıklısı, kısa sorgular için stratejiyi değiştirmek: iki harfli bir aramada tam metin yerine normalize kolonda ön ek eşleşmesine düşmek. Kullanıcı bunu asla fark etmez, sen de sunucu ayarına bağımlı kalmazsın. Ciddi bir e-pin yazılımı bu geri düşüş mantığını hazır sunar; sunmuyorsa arama katmanı ilk günden eksik yazılmış demektir.
Eksik arama sonuçlarının kök neden dağılımı
- Karakter ve collation sorunları 45%
- Stok ve durum filtreleri 25%
- İndeks ve minimum kelime eşiği 20%
- Önbellek gecikmesi 10%
Stok sıfır diye ürünü saklayan filtre satışını da saklıyor
Pek çok script, stok adedi sıfır olan ürünü arama sonuçlarından tamamen çıkarır. Mantıklı görünür: olmayan şeyi göstermeyelim. Ama e-pin işinde stok dalgalıdır; sabah biten kod akşam yüklenir. Müşteri o iki saatlik boşlukta "bu sitede yok" hükmünü verir ve bir daha bakmaz. Üstelik arama motorlarına da aynı mesajı verirsin, çünkü ürün sayfası kataloğundan düşer.
Doğru davranış ürünü gizlemek değil, işaretlemektir. Sonuç listesinde kalsın, üstünde "stok bekleniyor" etiketi olsun, tıklayınca e-posta ile haber verme formu açılsın. Böylece kaybedilen satışın yerine bir talep kaydı koyarsın. Panelde bu taleplerin sayısını görmek, hangi ürünü ne kadar acele yüklemen gerektiğini söyleyen en dürüst veridir. Bir e-pin satış yazılımının stok politikası, sonuçları kırpmak değil, talebi yakalamak üzerine kurulmalı.
INNER JOIN sessiz bir katildir
Arama sorguları genelde ürün tablosuyla yetinmez; kategori, marka, görsel, fiyat listesi tablolarına da bağlanır. Bu bağlantılar INNER JOIN ile kurulduğunda, ilgili yan kaydı eksik olan her ürün sonuçtan sessizce düşer. Görseli yüklenmemiş bir ürün, kategorisi silinmiş bir ürün, fiyat listesine eklenmemiş bir varyant: hepsi panelde canlı görünür ama aramada yoktur. Bu tip kayıplar toplu ürün aktarımlarından sonra patlar, çünkü aktarım her zaman her ilişkiyi doldurmaz.
Teşhis yöntemi basit: aynı sorguyu INNER yerine LEFT JOIN ile çalıştır ve yan tablo alanı NULL gelen satırları say. Aradaki fark, senin göremediğin kayıp katalogdur. Kalıcı çözüm ise iki katmanlı: bağlantıları LEFT JOIN'e çevirip eksik veriye varsayılan atamak ve panelde "eksik ilişkili ürünler" raporu tutmak. Bu rapor, iyi kurulmuş her dijital ürün satış scriptinde olması gereken bir sağlık göstergesidir.
Sonuç bulunmadığında en yakın üç ürünü, popüler kategorileri ve bir talep formunu göster. Boş ekran kesin kayıp, dolu ekran ise ikinci bir şanstır.
Arama logu tutmayan panel kör uçuyor
Bütün bu düzeltmeleri yapsan bile, ölçmediğin sürece bir sonraki eksikliği yine müşteriden öğrenirsin. Her sorguyu, sonuç sayısını ve sonucun tıklanıp tıklanmadığını kaydet. Sıfır sonuç veren sorguların listesi, sana katalogda hangi ürünün eksik olduğunu ve müşterilerin ürünleri hangi isimle andığını doğrudan söyler. Bu liste zamanla eşanlamlı tablonu besler ve arama kalitesi kendi kendine artar.
Haftada bir bu raporu on dakika okumak, yeni bir reklam kampanyasından daha fazla ciro getirebilir. Çünkü burada yeni trafik satın almıyorsun; zaten kapıya gelmiş, niyeti net olan müşterinin yolundaki taşı kaldırıyorsun. Bu yüzden bir e-pin scripti değerlendirirken "arama var mı" diye değil, "aramayı ölçüyor mu" diye sor. Detaylı özellik kırılımını özellikler bölümünde inceleyebilirsin.
| Kontrol adımı | Neye bakacaksın | Geçti sayılır mı |
|---|---|---|
| Normalize arama kolonu | Türkçe karakter ASCII'ye çevriliyor mu | "bıgo" → Bigo sonucu geliyorsa evet |
| Sözcük bazlı eşleşme | Kelime sırası değişince sonuç sabit mi | İki farklı sıralamada aynı sayı gelirse evet |
| Kısa sorgu davranışı | İki harfli aramada geri düşüş var mı | "uc" ve "vp" sonuç dönüyorsa evet |
| Stok politikası | Tükenen ürün listede kalıyor mu | Etiketli görünüyorsa evet |
| JOIN sağlığı | Eksik ilişkili ürün raporu mevcut mu | Panelde sayı görüyorsan evet |
| Önbellek geçersizleştirme | Ürün kaydında arama önbelleği düşüyor mu | Yeni ürün anında çıkıyorsa evet |
| Arama logu | Sıfır sonuçlu sorgular kaydediliyor mu | Haftalık liste alabiliyorsan evet |
Aramanın kaçırdığı satışları geri kazan
Pinova, normalize arama katmanı, eşanlamlı yönetimi ve sıfır sonuç raporuyla gelir. Kataloğundaki her ürün, müşterinin yazdığı her varyasyonla bulunur.
Arama sonuçları neden panelde gördüğüm ürün sayısından az?
Çoğu zaman sorgunun stok, durum veya kategori filtreleri ürünleri dışlıyordur. Aynı sorguyu filtresiz çalıştırıp iki sayıyı kıyaslamak, kaybın nerede olduğunu ilk denemede gösterir.
Türkçe karakter sorununu collation değiştirerek çözebilir miyim?
Kısmen. Collation'ı Türkçe uyumlu hale getirmek yardımcı olur ama kalıcı çözüm ayrı bir normalize arama kolonu tutmaktır; böylece sunucu ayarına bağımlı kalmazsın.
İki harfli kısaltmalar için ne yapmalıyım?
Kısa sorgularda tam metin indeksinden ön ek eşleşmesine geri düşen bir mantık kur. Böylece VP, UC, PB gibi kritik kısaltmalar sunucu ayarı ne olursa olsun sonuç döner.
Tükenen ürünleri gizlemek yerine göstermek zarar vermez mi?
Vermez, tam tersi. Ürünü "stok bekleniyor" etiketiyle göstermek hem müşteriyi sitede tutar hem de haber verme formu üzerinden ölçülebilir bir talep kaydı oluşturur.
Arama, e-pin satışında vitrinin tamamıdır; orada kaybettiğin müşteriyi başka hiçbir yerde geri kazanamazsın. Kataloğunun her kelimeyle, her kısaltmayla ve her yazım hatasıyla bulunduğu bir altyapının nasıl çalıştığını kendi gözünle görmek istersen canlı demo üzerinden arama kutusunu zorla, sonra fiyat tablosuna bak; farkı en hızlı böyle anlarsın.

