https://www.forum.megaforbb.org/search?q=<<<<<<<<<<<<<<<<<<<<
ciddi birşey değil ama bug sayılır, MySQL Fulltext sorgusuna çevirmeye çalıştı , BOOLEAN MODE < < bu tür sembolleri kabul etmiyor , mysql da sorguyu parse edemeyince hata verdi.
https://www.forum.megaforbb.org/search?q=<<<<<<<<<<<<<<<<<<<<
ciddi birşey değil ama bug sayılır, MySQL Fulltext sorgusuna çevirmeye çalıştı , BOOLEAN MODE < < bu tür sembolleri kabul etmiyor , mysql da sorguyu parse edemeyince hata verdi.
Merhabalar, Bildiriminiz için teşekkürler, fix yapıldı yayına alacağım hemen fix hali ile.
Hataya ve çözümüne gelecek olursak;
App/Services/SearchService.php → sanitizeSearchQuery() içinde:
Eksik temizlik: Regex sadece + - * " ( ) karakterlerini siliyordu; BOOLEAN MODE'un diğer operatörleri < > ~ @ temizlenmiyordu.
Asıl tetikleyici fallback: return implode(' ', $safe) ?: $query; satırı — tüm kelimeler temizlenip $safe boş kalınca ham kullanıcı sorgusunu geri döndürüyordu. Yani <<<<<<<< doğrudan MySQL'e gidiyordu.
Çözüm olarak ise;
Temizleme regex'ine < > ~ @ karakterleri eklendi: /[+\-*"()<>~@]/u
?: $query fallback'i kaldırıldı. Artık kullanılabilir hiçbir kelime kalmazsa boş string dönüyor. Bunu çağıranlar "fulltext terimi yok" olarak yorumluyor:
* Posts: $useFulltext false olur → güvenli LIKE aramasına düşer.
* Topics: Meilisearch'e ham metin gider (orada parse hatası olmaz).
Bu sayede <<<<<<<, >>>>, ~, @ gibi yalnızca özel karakterlerden oluşan aramalar artık MySQL hatası vermeden boş/güvenli sonuç döndürür.