Arama
Genel Bakış
Arama V1, yayında olan sayfa içeriği için veritabanı destekli genel arama sağlayan temel bir CMS özelliğidir.
- Arama yalnızca yayında olan genel sayfaları dizinler.
- Arama satırları site ve dil (locale) bazında kapsamlandırılır.
- Arama, türetilmiş bir
public_search_indextablosu kullanır. - Arama; Meilisearch, Algolia, Elasticsearch veya Scout gibi harici servisler gerektirmez.
Neler Dizinlenir
- sayfa çevirisinin başlığı, slug'ı ve genel yol (public path) meta verileri
- etkin slotlardaki, sayfaya ait yayında olan blok ağaçları
- genel sayfanın tükettiği haliyle uyumlu ortak slot içeriği
Arama şunları dizinlemez:
- taslak, incelemede, arşivlenmiş veya gizli dahili sayfalar
- bağımsız arama sonucu olarak ortak slot kaynak sayfaları
- devre dışı bırakılmış slotlar
- siteler arası, pasif, kabuk (shell) ile uyumsuz veya slot ile uyumsuz ortak slot içeriği
- arama içeriği olarak yalnızca yöneticiye görünen etiketler, blok türü adları, CSS sınıfları veya ham ayar blob'ları
- genel gövde araması içeriği olarak sayfa SEO açıklamaları, anahtar kelimeler ve Open Graph meta verileri
Arama, genel sayfa kimliğinin bir parçası olduğu için sayfa çevirisinin başlığını kullanmaya devam edebilir; ancak sayfa SEO geçersiz kılmaları, Arama V1'de aranabilir gövde içeriği olarak değil, head meta verisi olarak ele alınır.
Genel Arama Rotaları
- varsayılan dil (locale):
/search?q=term - varsayılan olmayan dil (locale):
/{locale}/search?q=term - gelişmiş JSON uç noktası:
/search.json?q=term - gelişmiş yerelleştirilmiş JSON uç noktası:
/{locale}/search.json?q=term
Geçerli ana makine (host) siteyi, rota öneki ise sayfalarla aynı genel yönlendirme modelini kullanarak dili (locale) çözümler.
Genel Arama Deneyimi
Birincil genel kullanıcı deneyimi, JavaScript kullanılabilir olduğunda Header Actions arama tetikleyicisinden açılan gelişmiş bir arama modalıdır.
- tetikleyici, geçerli dilin
/searchrotasına normal bir bağlantı olarak kalır; böylece doğrudan bağlantılar, JavaScript'siz kullanım ve erişilebilirlik yedeği çalışmaya devam eder - modal sonuçları
public_search_indextarafından beslenir - sonuçlar geçerli çözümlenmiş site ve dil (locale) kapsamında kalır
- modal açıklaması, kullanıcıların hangi sitede arama yapıldığını görebilmesi için çözümlenmiş site etiketini adlandırabilir
- yedek
/searchsayfası, JavaScript'siz ve doğrudan bağlantı deneyiminin standart (canonical) hali olmaya devam eder
Genel arama modalı yalnızca Site Kimliği'ni kullanır:
- site etiketi öncelik sırası
display_name, ardındanseo_title, ardındannameşeklindedir System -> Settingsaltındaki Proje Kimliği yalnızca yöneticiye yöneliktir ve genel arama metinlerini veya kapsamını etkilemez
JSON uç noktası, modal için güvenli ve yapılandırılmış yük (payload) verisi döndürür:
- normalleştirilmiş
query countminimum_lengthtitle,urlveexcerptiçerenresults- uygun olduğunda
no_resultsmesajı - uygun olduğunda
minimum_query_lengthmesajı
Uç nokta; yönetici verilerini, taslak içeriği veya ham güvensiz HTML'yi açığa çıkarmaz.
Arama Formu Bloku
Herhangi bir genel slota arama formu yerleştirmek için birinci sınıf Search Form blokunu kullanın.
- çevrilen alanlar: erişilebilir etiket, yer tutucu, düğme etiketi
- paylaşılan alanlar: düğme görünürlüğü ve düğme varyantı
- varsayılan hedef: geçerli sitenin çözümlenmiş arama rotası
- blok arama sayfasında görüntülendiğinde geçerli
qdeğeri korunur - normal bir GET formu olarak
/searchadresine gönderim yapmaya devam eder ve modal akışına zorlanmaz
Yönetici Ekranı
Süper yöneticiler arama durumunu Admin -> Maintenance -> Search Rebuild altında inceleyebilir.
Ekran şunları gösterir:
- toplam dizinlenmiş satır sayısı ve son dizinleme zaman damgası
- site bazında kapsam
- dil (locale) bazında kapsam
- yeniden oluşturma eylemi
Yeniden Oluşturma Komutu
Türetilmiş arama satırlarını yeniden oluşturmanız gerektiğinde, veri kaybına yol açmayan yeniden oluşturma komutunu kullanın:
php artisan search:rebuild
php artisan search:rebuild --site=default
php artisan search:rebuild --locale=tr
php artisan search:rebuild --page=123
Komut yalnızca istenen arama kapsamını yeniden oluşturur ve CMS içeriğini değiştirmez.
Arama tablosu mevcut kurulumda eksikse, türetilmiş dizinin oluşturulabilmesi için önce php artisan migrate komutunu çalıştırın.
Taşınabilirlik Sınırı
public_search_index, türetilmiş çalışma zamanı verisidir.
- ortam yedeklemeleri ve geri yüklemeleri tüm veritabanı üzerinde çalıştığı için bu verilerde bulunabilir
- dışa/içe aktarma taşınabilirliği için gerekli site içeriği değildir
- dışa/içe aktarma iş akışları, içerik aktarımından sonra gerektiğinde arama satırlarını yeniden oluşturmalıdır
Güvenlik
Arama V1, veri kaybına yol açan veritabanı sıfırlama komutları gerektirmez.
- yıkıcı komut korumaları yerinde kalır
- yeniden oluşturmalar, yalnızca istenen kapsamdaki türetilmiş arama satırlarını temizler ve yeniden oluşturur