Ricerca
Overview
Search V1 è una funzionalità principale del CMS che offre una ricerca pubblica basata sul database per i contenuti delle pagine pubblicate.
- La ricerca indicizza solo le pagine pubbliche pubblicate.
- Le righe di ricerca sono delimitate per sito e lingua (locale).
- La ricerca utilizza una tabella derivata
public_search_index. - La ricerca non richiede servizi esterni come Meilisearch, Algolia, Elasticsearch o Scout.
Che cosa viene indicizzato
- il titolo della traduzione della pagina, lo slug e i metadati del percorso pubblico
- gli alberi di blocchi pubblicati di proprietà della pagina negli slot abilitati
- il contenuto Shared Slot compatibile così come viene utilizzato dalla pagina pubblica
La ricerca non indicizza:
- pagine interne in bozza, in revisione, archiviate o nascoste
- le pagine sorgente degli Shared Slot come risultati di ricerca autonomi
- gli slot disabilitati
- contenuti Shared Slot cross-site, inattivi, incompatibili con lo shell o incompatibili con lo slot
- etichette riservate all'amministrazione, nomi dei tipi di blocco, classi CSS o blob di impostazioni grezzi come contenuto di ricerca
- le descrizioni SEO della pagina, le parole chiave e i metadati Open Graph come contenuto pubblico del corpo della ricerca
La ricerca può comunque utilizzare il titolo della traduzione della pagina, perché fa parte dell'identità della pagina pubblica, ma per il resto le sovrascritture SEO della pagina sono trattate come metadati di head e non come contenuto del corpo ricercabile in Search V1.
Rotte pubbliche di ricerca
- lingua predefinita:
/search?q=term - lingua non predefinita:
/{locale}/search?q=term - endpoint JSON avanzato:
/search.json?q=term - endpoint JSON avanzato localizzato:
/{locale}/search.json?q=term
L'host corrente risolve il sito e il prefisso della rotta risolve la lingua (locale) utilizzando lo stesso modello di routing pubblico delle pagine.
Esperienza utente della ricerca pubblica
L'esperienza pubblica principale è un modale di ricerca avanzato che si apre dal trigger di ricerca di Header Actions quando JavaScript è disponibile.
- il trigger resta un normale link alla rotta
/searchdella lingua corrente, quindi i link diretti, l'uso senza JS e il fallback di accessibilità continuano a funzionare - i risultati del modale sono basati su
public_search_index - i risultati restano delimitati al sito e alla lingua risolti correntemente
- la descrizione del modale può indicare l'etichetta del sito risolto, così gli utenti vedono in quale sito stanno cercando
- la pagina di fallback
/searchresta l'esperienza canonica senza JS e per i link diretti
Il modale di ricerca pubblica utilizza soltanto Site Identity:
- la precedenza dell'etichetta del sito è
display_name, poiseo_title, poiname - Project Identity, in
System -> Settings, è riservato all'amministrazione e non influisce sui testi né sull'ambito della ricerca pubblica
L'endpoint JSON restituisce dati strutturati e sicuri per il modale:
querynormalizzatacountminimum_lengthresultscontitle,urledexcerpt- messaggio
no_resultsquando applicabile - messaggio
minimum_query_lengthquando applicabile
L'endpoint non espone dati amministrativi, contenuti in bozza o HTML grezzo non sicuro.
Blocco Search Form
Utilizzate il blocco di prima classe Search Form per inserire un modulo di ricerca in qualsiasi slot pubblico.
- campi tradotti: etichetta accessibile, segnaposto, etichetta del pulsante
- campi condivisi: visibilità del pulsante e variante del pulsante
- destinazione predefinita: la rotta di ricerca risolta del sito corrente
- il valore corrente di
qviene conservato quando il blocco viene renderizzato nella pagina di ricerca - continua a inviare a
/searchcome normale modulo GET e non viene forzato nel flusso del modale
Schermata di amministrazione
I super admin possono controllare lo stato della ricerca in Admin -> Maintenance -> Search Rebuild.
La schermata mostra:
- totale delle righe indicizzate e timestamp dell'ultima indicizzazione
- copertura per sito
- copertura per lingua (locale)
- azione di ricostruzione
Comando di ricostruzione
Utilizzate il comando di ricostruzione non distruttivo quando dovete ricreare le righe di ricerca derivate:
php artisan search:rebuild
php artisan search:rebuild --site=default
php artisan search:rebuild --locale=tr
php artisan search:rebuild --page=123
Il comando ricostruisce solo l'ambito di ricerca richiesto e non modifica i contenuti del CMS.
Se la tabella di ricerca non è presente nell'installazione corrente, eseguite prima php artisan migrate in modo che l'indice derivato possa essere creato.
Confine di portabilità
public_search_index contiene dati derivati di runtime.
- può essere presente nei backup e nei ripristini dell'ambiente, perché questi operano sull'intero database
- non è contenuto del sito necessario per la portabilità di esportazione/importazione
- i flussi di esportazione/importazione dovrebbero ricostruire le righe di ricerca dopo il trasferimento dei contenuti, quando necessario
Sicurezza
Search V1 non richiede comandi distruttivi di reset del database.
- le protezioni contro i comandi distruttivi restano attive
- le ricostruzioni cancellano e ricreano soltanto le righe di ricerca derivate nell'ambito richiesto