# Qurandia: numarası tutmayan iki veri setini metnin parmak iziyle eşleştirmek

> Kur'an okumak, anlamak ve öğrenmek isteyenler için açık ve ücretsiz bir kaynak; Kur'an ve hadis merkezli araştırmayı tek çatı altında topluyor.

- Şu an ne yapıyor: Kur'an ve hadis metinlerini birlikte okumaya ve aramaya açık, ücretsiz bir kaynak olarak yayında; harf düzeyinde parmak izi eşlemesi hadis koleksiyonlarında %91–99 kapsam veriyor. Kaynağa doğrudan bakmak isteyen okuyucu ve araştırmacı bugün kullanabilir.
- Tür: Web uygulaması
- Olgunluk: Alpha
- Durum: Geliştiriliyor
- Odak: Eğitim ve Araştırma
- Başlangıç: 2026-08-13
- Teknolojiler: Laravel, PHP, Livewire, Alpine.js, Tailwind, PostgreSQL, Redis, Horizon, Filament, Pest
- Etiketler: #icerik-platformu, #arama, #veri-aktarimi
- Web sitesi: https://qurandia.com
- Bu işin arkasındaki araştırmalar: opcache preload deploy faturasını on dört kata kadar siliyor — ama yedi framework'ün beşi onu size vermiyor (https://www.muhammetsafak.com.tr/research/opcache-preload-deploy-faturasi/)
- Kaynak: https://www.muhammetsafak.com.tr/labs/qurandia/
- Dil: tr-TR
- Yazar: Muhammet Şafak

---
Qurandia, Kur'an okumak, anlamak ve öğrenmek isteyen insanlar için açık ve
ücretsiz bir bilgi kaynağı olarak kuruldu: meal, kelime-kelime çözümleme,
karşılaştırmalı tefsir, sebeb-i nüzul, hadis külliyatı, kök sözlüğü, tematik
dizin, arama ve öğrenme akademisi tek çatı altında.

İşin ilginç kısmı arayüzde değil, altındaki veride. Bu tür bir platform tek
bir kaynağın kopyası değildir; birbirinden habersiz üretilmiş veri setlerini
üst üste bindirmek zorundadır. Ve o setler birbirini tanımaz.

## Numaraya değil, metnin parmak izine güvenmek

En sert örnek hadis tarafında çıktı. Arapça metin ve İngilizce çeviriler bir
veri setinden, Türkçe çeviriler bambaşka bir setten geliyor. İkisi de hadisleri
numarayla adresliyor — ama numaralar aynı şeyi saymıyor: biri koleksiyon içi
global sıra numarası kullanıyor, diğeri farklı bir numaralandırmayı. Doğrudan
eşleştirmede tutarlılık **%0–14** arasında. Yani numaraya güvenmek sessizce
yanlış hadise yanlış çeviriyi bağlamak demek.

Denenen çözüm numarayı hiç kullanmamak: **Arapça metnin parmak izi**. Metin NFC
ile normalize ediliyor, yazım varyantları tek harfe indiriliyor (أ إ آ ٱ → ا,
ى → ي, ؤ → و, ئ → ي, ة → ه), sonra `\x{0621}-\x{064A}` aralığı dışında ne varsa
— hareke, durak işareti, boşluk, noktalama — söküp atılıyor. Geriye kalan çıplak
harf dizisi iki veri setinde de aynı. Eşleşme oranı koleksiyona göre **%91–99**.

Aynı disiplin import hattının tamamında geçerli: her komut idempotent (doğal
unique anahtar üzerinden upsert), her koşu `import_runs` satırı bırakıyor,
testler ağ kullanmıyor — hepsi fixture ile çalışıyor.

Ses tarafında da bir sınır çizildi: 6.236 mp3 kendi sunucumuzda barındırılıyor,
üçüncü tarafa bağlı değil ve oynatıcı `wire:navigate` gezinmeleri boyunca
kesintiye uğramayan kalıcı bir dock olarak duruyor — sayfa değişince tilavet
durmuyor.

## Sayılarla bugünkü hâli

Sayılarla: 114 sure, 6.236 ayet, üç kaynaktan 18.708 meal, 77.429 kelime ve
1.651 kök, 8.117 tefsir girdisi, 197 sebeb-i nüzul notu (TR+EN), altı
koleksiyonda 34.178 hadis. Türkçe hadis çevirisi kapsamı %83 — kalan boşluk
kaynak tarafında, bizde değil.

Arama Postgres FTS + `pg_trgm` üstünde; Scout ya da Meilisearch yok, çünkü
gerekmedi. Üçüncü taraf UI/JS kütüphanesi de yok: dalga formu, grafik, ikon,
tarih — hepsi el yapımı SVG ve Alpine. Sitemap ~85 bin URL'e çıkıyor, locale
başına tek giriş verecek biçimde index'lenmiş.

Kalite kapıları duruyor: gerçek Postgres üzerinde 127/127 Pest testi yeşil,
Larastan level 8 ve Pint temiz. Mobil Lighthouse `/quran/al-fatihah` için
erişilebilirlik 100, best practices 100, SEO 92.

## Kalan yüzde hâlâ elde

Altyapı kurulu, platform yayında. Devam eden şey kod değil veri.

Parmak izi eşleştirmesi koleksiyona göre %91–99'da duruyor; geriye kalan yüzde
hâlâ elde. Bunlar yazım varyantları normalize edildikten sonra bile birebir
tutmayan kayıtlar — yani otomatik eşleştirmenin bittiği yer. Türkçe hadis
çevirisi kapsamı da %83; kalan boşluk kaynak tarafında ve yazılımla kapanmıyor,
başka bir kaynak ya da elle çeviri istiyor.

Açık uç bu yüzden ölçülebilir ve sıkıcı: kapsamı yüze yaklaştırmak. Eşleşmeyen
her hadis, metnin parmak izine indirgenmesinin nereye kadar götürdüğünü gösteren
bir kayıt.
