Proje: Okul Platform · Hub: Okul Platform — Domain
Arama Endpoint’i
GET /api/search/schools — optional auth (auth:sanctum opsiyonel)
Parametreler
query(required, 1-255 char) — Arama metnisearch_locations(boolean, default: false) — Lokasyon sonuçları dahil etsearch_colleges(boolean, default: false) — Kolej sonuçları dahil et
prepareSearchQuery() Helper
helpers.php içinde Türkçe arama normalize fonksiyonu:
'deki ', 'daki ', 'ile ', 've ' → boşluk ile kaldır
'ana okul' → 'anaokul'
'orta okul' → 'ortaokul'
'okulu' → 'okul'
'okulları' → 'okul'
Örnek: “Bakırköy’deki anaokulları” → “Bakırköy anaokul”
Arama Altyapısı
Laravel Scout + Typesense
School::toSearchableArray() ile index alanları:
name, name_no_diacritics— İsim (aksanlı/aksansız)about, mission, vision, history— İçerikschool_type_name, url, thumb_urllocation_*— Lokasyonis_customer, listing_priority— Önceliklendirme
Test Verisi Gizleme
Admin değilse: excludeTestData() ile test okulları gizlenir.
$showTestData = auth()->user()?->isAdmin() ?? false;SchoolSearchService
app/Services/Controllers/General/Search/SchoolSearchService.php — Typesense sorgu çalıştırma.
SchoolSearchRepositoryInterface → Arama yapılır.
Related
- api-school-filter-search — Typesense index yapısı
- api-key-integrations — Typesense entegrasyonu