Şarkı, sanatçı, albüm ve playlist arayın
Kullanıcıların aradıklarını anında bulabilmesi için gelişmiş bir arama sistemi oluşturduk. Yazarken sonuçların canlı olarak gösterildiği, akıllı öneri sunan bir deneyim tasarladık.
Arama kutusuna tıklar ve yazmaya başlar
İlk 2-3 harften sonra sonuçlar anında belirir
Şarkılar, sanatçılar, albümler kategorilere ayrılmış şekilde listelenir
İstediği sonuca tıklayarak direkt gider
Her tuş basımında sonuçlar güncellenir
Şarkı, sanatçı, albüm, playlist ayrı gruplar
Son aramalar hatırlanır ve önerilir
Popüler aramalar başlangıçta gösterilir
Kullanıcı arama kutusuna yazmaya başladığında, sistem milisaniyeler içinde şu süreçleri işletir:
Her tuş basımında hemen sorgu göndermek yerine, debounce(300ms) fonksiyonu kullanılır. Kullanıcı yazmayı 300 milisaniye durdurunca sorgu tetiklenir. Bu, sunucu yükünü %80 azaltır.
fetch('/api/search?q=' + query) ile arama terimi sunucuya gönderilir. SearchController bu isteği alır ve arama motorunu tetikler.
Song::where('title', 'LIKE', "%{$q}%"), Artist::where('name', 'LIKE', ...) ve Album::where(...) sorguları paralel çalışır. Her tabloda ayrı arama yapılır.
SOUNDEX() ve Levenshtein algoritmaları devreye girer. "Tarkn" yazdığınızda "Tarkan" bulunur çünkü ses benzerliği hesaplanır. Yazım hatası toleransı %85'e kadar çıkar.
Gelen sonuçlar type alanına göre gruplandırılır: Şarkılar, Sanatçılar, Albümler, Playlistler. Her grup için ayrı bölüm oluşturulur ve relevance_score'a göre sıralanır.
Kullanıcı bir sonuca tıkladığında search_histories tablosuna kayıt yapılır. Aynı kullanıcı daha sonra aynı harfleri yazdığında, geçmiş aramalar öncelikli gösterilir.
Yazarken sonuçların anında gösterilmesi
Google'da yazdıkça önerilerin çıkması gibi
Yaklaşık eşleştirme, yazım hatası toleransı
"Tarkn" yazsan bile "Tarkan" bulur
Yazım bitene kadar aramayı bekletme
Her harfte değil, duraksadığında arar
Yazdığınız kelimeyi tahmin edip tamamlama
"Tar" yazınca "Tarkan" önerir
Yazarken anında sonuç