Site İçi Aramayı Gerçekten İyileştiren Ayarlar
Kullanıcı arama kutusuna yazdığında ne istediğini kelimesi kelimesine söyler. Başka hiçbir yerde bu kadar temiz niyet verisi toplayamazsın, buna rağmen site içi arama çoğu projede kurulur ve bir daha açılmaz. Aşağıdakiler, o kutuyu çalışır hale getirmek için hangi sırayla ne yapılacağı üzerine.
Ölçüyü önce kur
İki metrik yeter. Doğruluk, dönen sonuçlar içinde işe yarayanların oranı. Kapsam, sitedeki işe yarar içeriğin ne kadarına ulaşabildiğin. Bu ikisi ters çalışır, birini yükselttiğinde diğeri düşer; aşağıdaki ayarların hepsinin aynı anda "iyileştirme" sayılmamasının sebebi de bu.
Ölçmek için karmaşık bir düzeneğe gerek yok. Loglardan en çok aranan elli sorguyu al, her biri için ilk on sonuca bak, alakalı olanları say. Yarım günlük iş, ve sonrasında yaptığın her değişikliğin işe yarayıp yaramadığını aynı listeyle test edersin. Yanına iki ucuz sayı daha ekle: sonuç dönmeyen sorguların oranı, ve aramadan sonra hiçbir sonuca tıklamadan siteden çıkanların oranı. İkincisi genelde daha acıtıcıdır.
Logları oku, ilk düzeltmeleri elle yap
Sonuç dönmeyen sorgular listesi, yapılacaklar listendir. Orada üç şey görürsün: sitede gerçekten olmayan içerik, farklı kelimeyle aranan mevcut içerik, ve yazım hatası. Üçünün çözümü ayrıdır, karıştırma.
En çok aranan otuz kırk sorgu için doğru sayfayı elle en üste sabitle. Bu, algoritmayı düzeltmenin yerine geçmez ama trafiğin büyük kısmı bu kuyruğun başında olduğu için etkisi anında görünür. Sabitlediğin sonucu "önerilen" rozetiyle ayrı bir kutuya koyma; kullanıcı reklam sanıp atlıyor.
Eşanlamlı tablosu en yüksek getirili iş
Site kendi jargonunu kullanır, kullanıcı kendi kelimesini. Ürün kataloğunda "mont" yazar, insan "kaban" arar. Bilgi tabanında "kimlik doğrulama" der, kullanıcı "giriş yapamıyorum" yazar.
Bu tabloyu toplantıda tahmin ederek değil, sonuçsuz sorgu listesinden okuyarak doldur. Yeni bir arama altyapısına geçmene de gerek yok: sorguyu indekse göndermeden önce genişleten küçük bir eşleme tablosu çoğu sitede işi bitirir, ve tablo veritabanında durduğu için düzeltmesi tek satırlık iştir.
Kök bulma Türkçede varsayılan ayarla çalışmaz
Türkçe eklemeli bir dil. "Kitaplarımızdan" ile "kitap" aynı sonucu döndürmeli, bunu çekim eklerini atan bir gövdeleyici çözer. Buraya kadar sorun yok.
Sorun, kök bulmadan beklenmeyecek şeyin beklenmesi. "Otomasyon" arayan birine "otomatik sistemler" içeriğini getirmek gövdeleyicinin işi değildir; ikisi arasındaki bağ yapım eki düzeyindedir ve hiçbir gövdeleyici bunları aynı köke indirmez. O eşleşmeyi istiyorsan eşanlamlı tablosuna yazacaksın. Agresif gövdeleyicilerde ters yönde bir risk daha var: kelimeyi fazla kısaltıp alakasız sonuçları içeri alır, yani kapsam artarken doğruluk çöker. Türkçe için hazır bir çözümleyici kullanıyorsan, en çok aranan elli sorguyla önce ve sonra karşılaştırması yap.
Yazım hatası toleransı evet, Soundex hayır
Yazım toleransını yalnızca sonuç sayısı sıfır olduğunda devreye sok. Sorgu zaten sonuç döndürüyorken düzenleme mesafesiyle sonuç genişletmek, ilk sayfayı alakasız kayıtlarla doldurmanın en hızlı yolu. Bir veya iki karakterlik mesafe yeter; üç ve üzeri gürültüdür.
Sesteş kelimeler için sıkça önerilen Soundex'i ise Türkçe bir sitede kullanma. Soundex İngilizce ünsüz gruplarına göre kodlama yapar; ç, ş, ğ, ı gibi harflerin ve Türkçedeki ünlü uyumunun bu tabloda karşılığı yok. Türkçede asıl sorun sesteşlik de değil, klavyede yan tuşa basmak ve şapkalı harfleri atlamaktır. Türkçe karakterleri ASCII karşılığına indirip iki tarafı da normalize et, bu tek başına sesteş kurgusunun vaat ettiğinden fazlasını çözer.
Stop words: küçük kazanç, sessiz kayıp
"Ve", "ile", "bir" gibi kelimeleri skorlamadan düşürmek sonuçları temizler. Ama bu kelimeleri indeksten tamamen atarsan, adında onlar geçen içerikleri aranamaz hale getirirsin. Kitap adları, film başlıkları, kampanya isimleri; hepsi bu tuzağa düşer.
Doğru davranış, stop word'leri indekste tutup skorlamada ağırlığını düşürmek. Bir de sorgunun tamamı stop word'lerden oluştuğu durumu ayrıca ele al, yoksa kullanıcı boş bir sonuç sayfasıyla karşılaşır ve hatanın kendisinde olduğunu düşünür.
Bu ayarların hepsi aynı yöne itiyor
Eşanlamlı, kök bulma, yazım toleransı, ses benzerliği. Dördü de aynı şeyi yapar: sorguyu genişletir, yani kapsamı artırır. Doğruluk ise düşer. Beş yüz sayfalık bir sitede bunun bedeli görünmez, çünkü zaten dönecek çok az kayıt vardır. Elli bin ürünlü bir katalogda hepsini birden açtığında ilk sayfa alakasız sonuçlarla dolar ve kullanıcı aramanın bozulduğunu söyler, ki haklıdır.
Sıralamayı düzeltmeden genişletme yapma. Başlıkta geçen eşleşmeyi gövdede geçenden yukarı al, tıklanan sonuçları biriktirip sinyal olarak kullan, sonuçsuz kalan sorgular için genişletmeyi kademeli aç. Sırayı tersine çevirirsen, her eklediğin özellik ölçtüğün sayıyı biraz daha kötüleştirir.