{"id":68931,"date":"2023-05-15T14:23:20","date_gmt":"2023-05-15T13:23:20","guid":{"rendered":"https:\/\/kinsta.com\/it\/?p=68931&#038;preview=true&#038;preview_id=68931"},"modified":"2023-07-06T21:57:16","modified_gmt":"2023-07-06T20:57:16","slug":"laravel-scout","status":"publish","type":"post","link":"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/","title":{"rendered":"Come Usare Laravel Scout per Abilitare la Ricerca Full-Text"},"content":{"rendered":"<p>Il <a href=\"https:\/\/kinsta.com\/it\/blog\/framework-laravel\/\">framework Laravel<\/a> \u00e8 diventato una risorsa fondamentale per chi realizza servizi web.<\/p>\n<p>Essendo uno strumento open-source, Laravel offre una miriade di funzionalit\u00e0 pronte all&#8217;uso che permettono di creare applicazioni robuste e funzionali.<\/p>\n<p>Tra le sue offerte c&#8217;\u00e8 <a href=\"https:\/\/laravel.com\/docs\/9.x\/scout\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel Scout<\/a>, una libreria per la gestione degli indici di ricerca dell&#8217;applicazione. La sua flessibilit\u00e0 consente a chi sviluppa di di mettere a punto le configurazioni e di scegliere tra i driver Algolia, Meilisearch, MySQL o <a href=\"https:\/\/sevalla.com\/database-hosting\/\">Postgres<\/a> per memorizzare gli indici.<\/p>\n<p>In questo articolo esploreremo lo strumento in modo approfondito, mostrandovi come aggiungere il supporto per la ricerca full-text a un&#8217;applicazione Laravel attraverso il driver. Modelleremo un&#8217;applicazione Laravel demo basata sui dati dei treni: la useremo per memorizzare il nome dei treni e poi con Laravel Scout aggiungeremo una ricerca all&#8217;applicazione.<\/p>\n<div><\/div><kinsta-auto-toc heading=\"Table of Contents\" exclude=\"last\" list-style=\"arrow\" selector=\"h2\" count-number=\"-1\"><\/kinsta-auto-toc>\n<h2>Prerequisiti<\/h2>\n<p>Per seguire questo tutorial dovete avere:<\/p>\n<ul>\n<li>Il compiler PHP installato sul vostro computer. Questo tutorial usa la versione 8.1 di PHP.<\/li>\n<li>Il motore Docker o Docker Desktop installato sul vostro computer.<\/li>\n<li>Un account <a href=\"http:\/\/algolia.com\" target=\"_blank\" rel=\"noopener noreferrer\">Algolia<\/a> cloud, che potete creare gratuitamente.<\/li>\n<\/ul>\n\n<h2>Come installare Scout in un progetto Laravel<\/h2>\n<p>Per usare Scout, dovete prima creare un&#8217;applicazione Laravel in cui volete aggiungere la funzionalit\u00e0 di ricerca. Lo script Laravel-Scout Bash contiene i comandi per generare un&#8217;applicazione Laravel all&#8217;interno di un container Docker. L&#8217;utilizzo di Docker vi permette di non dover installare altri software di supporto, come per esempio un database MySQL.<\/p>\n<p>Lo script Laravel-Scout usa il linguaggio di scripting Bash, quindi dovete eseguirlo in ambiente Linux. Se usate Windows, verificate di <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/wsl\/install\" target=\"_blank\" rel=\"noopener noreferrer\">configurare<\/a> Windows Subsystem for Linux (WSL).<\/p>\n<p>Se usate WSL, eseguite il seguente comando nel terminale per impostare la vostra distribuzione Linux preferita.<\/p>\n<pre><code class=\"language-bash\">wsl -s ubuntu<\/code><\/pre>\n<p>Successivamente, navigate nella posizione del computer in cui volete collocare il progetto. Lo script Laravel-Scout generer\u00e0 una cartella del progetto in questa posizione. Nell&#8217;esempio seguente, lo script Laravel-Scout creer\u00e0 una directory all&#8217;interno della directory <strong>desktop<\/strong>.<\/p>\n<pre><code class=\"language-bash\">cd \/desktop<\/code><\/pre>\n<p>Utilizzate il comando seguente per eseguire lo script Laravel-Scout. Verr\u00e0 creata un&#8217;applicazione Dockerizzata con il codice di base necessario.<\/p>\n<pre><code class=\"language-bash\">curl -s https:\/\/laravel.build\/laravel-scout-app | bash<\/code><\/pre>\n<p>Dopo l&#8217;esecuzione, cambiate la vostra cartella usando <code>cd laravel-scout-app<\/code>. Quindi, eseguite il comando <code>sail-up<\/code> all&#8217;interno della cartella del progetto per avviare i container Docker della vostra applicazione.<\/p>\n<p><strong>Nota:<\/strong> Su molte distribuzioni Linux, potrebbe essere necessario eseguire il comando sottostante con il comando <code>sudo<\/code> per avviare i privilegi elevati.<\/p>\n<pre><code class=\"language-bash\">.\/vendor\/bin\/sail up<\/code><\/pre>\n<p>Potrebbe verificarsi un errore:<\/p>\n<figure style=\"width: 307px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/1-port-allocated-error-1.png\" alt=\"Messaggio di errore che dice \"failed: port is already allocated\"\" width=\"307\" height=\"19\"><figcaption class=\"wp-caption-text\">Errore che dichiara che la porta \u00e8 allocata.<\/figcaption><\/figure>\n<p>Per risolvere questo problema, usate la variabile <code>APP_PORT<\/code> per specificare una porta all&#8217;interno del comando <code>sail up<\/code>:<\/p>\n<pre><code class=\"language-bash\">APP_PORT=3001 .\/vendor\/bin\/sail up<\/code><\/pre>\n<p>Quindi, eseguite l&#8217;applicazione attraverso Artisan sul server PHP con il comando seguente.<\/p>\n<pre><code class=\"language-bash\">php artisan serve<\/code><\/pre>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/laravel-with-artisan.png\" alt=\"Scherma di un editor che mostra che l\u2019applicazione Laravel servita con Artisan\" width=\"1600\" height=\"387\"><figcaption class=\"wp-caption-text\">Servire l&#8217;applicazione Laravel con Artisan<\/figcaption><\/figure>\n<p>Dal vostro browser web, navigate verso l&#8217;applicazione in esecuzione all&#8217;indirizzo http:\/\/127.0.0.1:8000. L&#8217;applicazione visualizzer\u00e0 la pagina di benvenuto di Laravel sul percorso predefinito.<\/p>\n<figure style=\"width: 1328px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/laravel-application-welcome-page.png\" alt=\"Schermata del sito di Laravel con la pagina di bevenuto\" width=\"1328\" height=\"900\"><figcaption class=\"wp-caption-text\">Pagina di benvenuto dell&#8217;applicazione Laravel<\/figcaption><\/figure>\n<h2>Come aggiungere Laravel Scout all&#8217;applicazione<\/h2>\n<p>Nel vostro terminale, inserite il comando che abilita il gestore di pacchetti PHP <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Composer<\/a> ad aggiungere Laravel Scout al progetto.<\/p>\n<pre><code class=\"language-bash\">composer require laravel\/scout<\/code><\/pre>\n<p>Successivamente, pubblicate il file di configurazione di Scout utilizzando il comando vendor:publish.<br \/>\nIl comando pubblicher\u00e0 il file di configurazione <code>scout.php<\/code> nella directory <strong>config<\/strong> della vostra applicazione.<\/p>\n<pre><code class=\"language-bash\"> php artisan vendor:publish --provider=\"LaravelScoutScoutServiceProvider\"<\/code><\/pre>\n<p>Ora, modificate il file boilerplate <strong>.env<\/strong> in modo che contenga un valore booleano <code>SCOUT_QUEUE<\/code>.<\/p>\n<p>Il valore <code>SCOUT_QUEUE<\/code> permette a Scout di mettere in coda le operazioni, garantendo tempi di risposta migliori. Senza questo valore, i driver di Scout, come <a href=\"https:\/\/www.meilisearch.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Meilisearch<\/a>, non rifletteranno immediatamente i nuovi record.<\/p>\n<pre><code class=\"language-bash\">SCOUT_QUEUE=true<\/code><\/pre>\n<p>Inoltre, modificate la variabile <code>DB_HOST<\/code> nel file <strong>.env<\/strong> in modo che punti al vostro localhost per usare il <a href=\"https:\/\/kinsta.com\/it\/blog\/sqlite-vs-mysql\/\">database MySQL<\/a> all&#8217;interno dei container Docker.<\/p>\n<pre><code class=\"language-bash\">DB_HOST=127.0.0.1<\/code><\/pre>\n<h2>Come contrassegnare un modello e configurare l&#8217;indice<\/h2>\n<p>Scout non abilita i modelli di dati ricercabili per impostazione predefinita. Dovete contrassegnare esplicitamente un modello come ricercabile usando il suo tratto <code>LaravelScoutSearchable<\/code>.<\/p>\n<p>Inizierete creando un modello di dati per un&#8217;applicazione demo di <code>Train<\/code> e contrassegnandolo come ricercabile.<\/p>\n<h3>Come creare un modello<\/h3>\n<p>Per l&#8217;applicazione <code>Train<\/code>, dovrete memorizzare i nomi segnaposto di ogni treno disponibile.<\/p>\n<p>Eseguite il comando Artisan qui sotto per generare la migrazione e chiamatela <code>create_trains_table<\/code>.<\/p>\n<pre><code class=\"language-bash\">php artisan make:migration create_trains_table <\/code><\/pre>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/migration-created.png\" alt=\"Schermata dell\u2019editor con il codice per creare una migrazione denominata create_trains_table\" width=\"1600\" height=\"145\"><figcaption class=\"wp-caption-text\">Creare una migrazione denominata create_trains_table<\/figcaption><\/figure>\n<p>La migrazione verr\u00e0 generata in un file il cui nome combina il nome specificato e il timestamp corrente.<\/p>\n<p>Aprite il file di migrazione che si trova nella directory <strong>database\/migrations\/<\/strong>.<\/p>\n<p>Per aggiungere una colonna titolo (title), aggiungete il seguente codice dopo la colonna <code>id()<\/code> nella riga 17. Il codice aggiunger\u00e0 una colonna title.<\/p>\n<pre><code class=\"language-php\">$table-&gt;string('title');<\/code><\/pre>\n<p>Per applicare la migrazione, eseguite il comando seguente.<\/p>\n<pre><code class=\"language-bash\">php artisan migrate<\/code><\/pre>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/artisan-migration.png\" alt=\"Schermata con l\u2019applicazione della migrazione Artisan\" width=\"1600\" height=\"335\"><figcaption class=\"wp-caption-text\">Applicare la migrazione Artisan<\/figcaption><\/figure>\n<p>Dopo aver eseguito la migrazione del database, create un file chiamato <strong>Train.php<\/strong> nella cartella <strong>app\/Models\/<\/strong>.<\/p>\n<h3>Come aggiungere il tratto LaravelScoutSearchable<\/h3>\n<p>Marcate il modello <code>Train<\/code> per la ricerca aggiungendo il tratto <code>LaravelScoutSearchable<\/code> al modello, come mostrato di seguito.<\/p>\n<pre><code class=\"language-php\">&lt;?php\nnamespace AppModels;\nuse IlluminateDatabaseEloquentModel;\nuse LaravelScoutSearchable;\n\nclass Train extends Model\n{\n\tuse Searchable;\n\tpublic $fillable = ['title'];<\/code><\/pre>\n<p>Inoltre, dovete configurare gli indici di ricerca sovrascrivendo il metodo <code>searchable<\/code>. Il comportamento predefinito di Scout prevede la persistenza del modello in base al nome della tabella del modello.<\/p>\n<p>Quindi, aggiungete il seguente codice al file <strong>Train.php<\/strong> sotto il codice del blocco precedente.<\/p>\n<pre><code class=\"language-php\">\/**\n \t* Retrieve the index name for the model.\n \t*\n \t* @return string\n\t*\/\n\tpublic function searchableAs()\n\t{\n    \treturn 'trains_index';\n   }\n}<\/code><\/pre>\n<h2>Come usare Algolia con Scout<\/h2>\n<p>Per la prima ricerca full-text con Laravel Scout, userete il driver <a href=\"https:\/\/www.algolia.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Algolia<\/a>. Algolia \u00e8 una piattaforma SaaS (Software as a Service) utilizzata per la ricerca di grandi quantit\u00e0 di dati. Fornisce a chi sviluppa una bacheca web per gestire gli indici di ricerca e una solida API a cui potete accedere tramite un kit di sviluppo software (SDK) nel vostro linguaggio di programmazione preferito.<\/p>\n<p>All&#8217;interno dell&#8217;applicazione Laravel, userete il <a href=\"https:\/\/github.com\/algolia\/algoliasearch-client-php\" target=\"_blank\" rel=\"noopener noreferrer\">pacchetto client<\/a> Algolia per PHP.<\/p>\n<h3>Come configurare Algolia<\/h3>\n<p>Per prima cosa, dovete installare il <a href=\"https:\/\/github.com\/algolia\/algoliasearch-client-php\" target=\"_blank\" rel=\"noopener noreferrer\">pacchetto client di ricerca per PHP<\/a> Algolia per la vostra applicazione.<\/p>\n<p>Eseguite il comando seguente.<\/p>\n<pre><code class=\"language-bash\">composer require algolia\/algoliasearch-client-php<\/code><\/pre>\n<p>Successivamente, dovete impostare le credenziali dell&#8217;Application ID e della Secret API Key di Algolia nel file <strong>.env<\/strong>.<\/p>\n<p>Con il vostro browser web, entrate nella bacheca di Algolia per ottenere le credenziali dell&#8217;Application ID e della Secret API Key.<\/p>\n<p>Fate clic su <strong>Settings<\/strong> in fondo alla barra laterale di sinistra per accedere alla pagina <strong>Settings<\/strong>.<\/p>\n<p>Andate quindi su <strong>API Keys<\/strong> nella sezione <strong>Team and Access<\/strong> della pagina Settings per visualizzare le chiavi del vostro account Algolia.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/api-keys-algolia-cloud.png\" alt=\"Schermata dell\u2019interfaccia di Algolia Cloud e della pagina Team and Access: \u00e8 evidenziato il pulsante API Keys\" width=\"1600\" height=\"1020\"><figcaption class=\"wp-caption-text\">Pagina API Keys su Algolia Cloud<\/figcaption><\/figure>\n<p>Nella pagina API Keys, prendete nota dei valori dell&#8217;<strong>Application ID<\/strong> e dell&#8217;<strong>Admin API Key<\/strong>. Userete queste credenziali per autenticare la connessione tra l&#8217;applicazione Laravel e Algolia.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/application-id-admin-keys.png\" alt=\"Schermata della pagina API Keys da cui visualizzare Application ID e Admin API Keys\" width=\"1600\" height=\"868\"><figcaption class=\"wp-caption-text\">Application ID e Admin API<\/figcaption><\/figure>\n<p>Aggiungete il codice seguente al vostro file .env utilizzando il vostro editor di codice e sostituite i segnaposto con i corrispondenti API secrets di Algolia.<\/p>\n<pre><code class=\"language-bash\">ALGOLIA_APP_ID=APPLICATION_ID\nALGOLIA_SECRET=ADMIN_API_KEY<\/code><\/pre>\n<p>Inoltre, sostituite la variabile <code>SCOUT_DRIVER<\/code> con il codice sottostante per cambiare il valore da <code>meilisearch<\/code> a <code>algolia<\/code>. La modifica di questo valore indicher\u00e0 a Scout di usare il driver Algolia.<\/p>\n<pre><code class=\"language-bash\">SCOUT_DRIVER=algolia<\/code><\/pre>\n<h2>Come creare i controller dell&#8217;applicazione<\/h2>\n<p>All&#8217;interno della cartella <strong>app\/Http\/Controllers\/<\/strong>, create un file <strong>TrainSearchController.php<\/strong> per memorizzare un controller per l&#8217;applicazione. Il controller elencher\u00e0 e aggiunger\u00e0 dati al modello <code>Train<\/code>.<\/p>\n<p>Aggiungete il seguente blocco di codice nel file <strong>TrainSearchController.php<\/strong> per creare il controller.<\/p>\n<pre><code class=\"language-php\">&lt;?php\nnamespace AppHttpControllers;\nuse IlluminateHttpRequest;\nuse AppHttpRequests;\nuse AppModelsTrain;\n\nclass TrainSearchController extends Controller\n{\n\t\/**\n \t* Get the index name for the model.\n \t*\n \t* @return string\n\t*\/\n\tpublic function index(Request $request)\n\t{\n    \tif($request-&gt;has('titlesearch')){\n        \t$trains = Train::search($request-&gt;titlesearch)\n            \t-&gt;paginate(6);\n    \t}else{\n        \t$trains = Train::paginate(6);\n    \t}\n    \treturn view('Train-search',compact('trains'));\n\t}\n\n\t\/**\n \t* Get the index name for the model.\n \t*\n \t* @return string\n\t*\/\n\tpublic function create(Request $request)\n\t{\n    \t$this-&gt;validate($request,['title'=&gt;'required']);\n\n    \t$trains = Train::create($request-&gt;all());\n    \treturn back();\n\t}\n}<\/code><\/pre>\n<h2>Come creare le route dell&#8217;applicazione<\/h2>\n<p>In questo passaggio creeremo le route per elencare e aggiungere nuovi treni al database.<\/p>\n<p>Aprite il file <strong>routes\/web.php<\/strong> e sostituite il codice esistente con il blocco sottostante.<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nuse IlluminateSupportFacadesRoute;\nuse AppHttpControllersTrainSearchController;\n\nRoute::get('\/', function () {\n\treturn view('welcome');\n});\n\nRoute::get('trains-lists', [TrainSearchController::class, 'index']) -&gt; name ('trains-lists');\n\nRoute::post('create-item', [TrainSearchController::class, 'create']) -&gt; name ('create-item');<\/code><\/pre>\n<p>Il codice precedente definisce due percorsi nell&#8217;applicazione. La richiesta <code>GET<\/code> per il percorso <code>\/trains-lists<\/code> elenca tutti i dati dei treni memorizzati. La richiesta <code>POST<\/code> per la route <code>\/create-item<\/code> crea nuovi dati sui treni.<\/p>\n<h2>Come creare le viste dell&#8217;applicazione<\/h2>\n<p>Create un file nella cartella <strong>resources\/views\/<\/strong> e chiamatelo <strong>Train-search.blade.php<\/strong>. Il file mostrer\u00e0 l&#8217;interfaccia utente della funzionalit\u00e0 di ricerca.<\/p>\n<p>Aggiungete il contenuto del blocco di codice sottostante nel file <strong>Train-search.blade.php<\/strong> per creare una singola pagina per la funzionalit\u00e0 di ricerca.<\/p>\n<pre><code class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n\t&lt;title&gt;Laravel - Laravel Scout Algolia Search Example&lt;\/title&gt;\n\t&lt;link rel=\"stylesheet\" type=\"text\/css\" href=\"https:\/\/maxcdn.bootstrapcdn.com\/bootstrap\/3.3.7\/css\/bootstrap.min.css\"&gt;\n&lt;\/head&gt;\n&lt;body&gt;\n&lt;div class=\"container\"&gt;\n\t&lt;h2 class=\"text-bold\"&gt;Laravel Full-Text Search Using Scout &lt;\/h2&gt;&lt;br\/&gt;\n\t&lt;form method=\"POST\" action=\"{{ route('create-item') }}\" autocomplete=\"off\"&gt;\n    \t@if(count($errors))\n        \t&lt;div class=\"alert alert-danger\"&gt;\n            \t&lt;strong&gt;Whoops!&lt;\/strong&gt; There is an error with your input.\n            \t&lt;br\/&gt;\n            \t&lt;ul&gt;\n                \t@foreach($errors-&gt;all() as $error)\n                \t&lt;li&gt;{{ $error }}&lt;\/li&gt;\n                \t@endforeach\n            \t&lt;\/ul&gt;\n        \t&lt;\/div&gt;\n    \t@endif\n\n    \t&lt;input type=\"hidden\" name=\"_token\" value=\"{{ csrf_token() }}\"&gt;\n\n    \t&lt;div class=\"row\"&gt;\n        \t&lt;div class=\"col-md-6\"&gt;\n            \t&lt;div class=\"form-group {{ $errors-&gt;has('title') ? 'has-error' : '' }}\"&gt;\n                \t&lt;input type=\"text\" id=\"title\" name=\"title\" class=\"form-control\" placeholder=\"Enter Title\" value=\"{{ old('title') }}\"&gt;\n                \t&lt;span class=\"text-danger\"&gt;{{ $errors-&gt;first('title') }}&lt;\/span&gt;\n            \t&lt;\/div&gt;\n        \t&lt;\/div&gt;\n        \t&lt;div class=\"col-md-6\"&gt;\n            \t&lt;div class=\"form-group\"&gt;\n                \t&lt;button class=\"btn btn-primary\"&gt;Create New Train&lt;\/button&gt;\n            \t&lt;\/div&gt;\n        \t&lt;\/div&gt;\n    \t&lt;\/div&gt;\n\t&lt;\/form&gt;\n\n\t&lt;div class=\"panel panel-primary\"&gt;\n  \t&lt;div class=\"panel-heading\"&gt;Train Management&lt;\/div&gt;\n  \t&lt;div class=\"panel-body\"&gt;\n        \t&lt;form method=\"GET\" action=\"{{ route('trains-lists') }}\"&gt;\n\n            \t&lt;div class=\"row\"&gt;\n                \t&lt;div class=\"col-md-6\"&gt;\n                    \t&lt;div class=\"form-group\"&gt;\n                        \t&lt;input type=\"text\" name=\"titlesearch\" class=\"form-control\" placeholder=\"Enter Title For Search\" value=\"{{ old('titlesearch') }}\"&gt;\n                    \t&lt;\/div&gt;\n                \t&lt;\/div&gt;\n                \t&lt;div class=\"col-md-6\"&gt;\n                    \t&lt;div class=\"form-group\"&gt;\n                        \t&lt;button class=\"btn btn-primary\"&gt;Search&lt;\/button&gt;\n                    \t&lt;\/div&gt;\n                \t&lt;\/div&gt;\n            \t&lt;\/div&gt;\n        \t&lt;\/form&gt;\n\n        \t&lt;table class=\"table\"&gt;\n            \t&lt;thead&gt;\n                \t&lt;th&gt;Id&lt;\/th&gt;\n                \t&lt;th&gt;Train Title&lt;\/th&gt;\n                \t&lt;th&gt;Creation Date&lt;\/th&gt;\n                \t&lt;th&gt;Updated Date&lt;\/th&gt;\n            \t&lt;\/thead&gt;\n            \t&lt;tbody&gt;\n                \t@if($trains-&gt;count())\n                    \t@foreach($trains as $key =&gt; $item)\n                        \t&lt;tr&gt;\n                            \t&lt;td&gt;{{ ++$key }}&lt;\/td&gt;\n                            \t&lt;td&gt;{{ $item-&gt;title }}&lt;\/td&gt;\n                            \t&lt;td&gt;{{ $item-&gt;created_at }}&lt;\/td&gt;\n                            \t&lt;td&gt;{{ $item-&gt;updated_at }}&lt;\/td&gt;\n                        \t&lt;\/tr&gt;\n                    \t@endforeach\n                \t@else\n                    \t&lt;tr&gt;\n                        \t&lt;td colspan=\"4\"&gt;No train data available&lt;\/td&gt;\n                    \t&lt;\/tr&gt;\n                \t@endif\n            \t&lt;\/tbody&gt;\n        \t&lt;\/table&gt;\n        \t{{ $trains-&gt;links() }}\n  \t&lt;\/div&gt;\n\t&lt;\/div&gt;\n&lt;\/div&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>Il codice HTML qui sopra contiene un elemento modulo con un campo di input e un pulsante per digitare il titolo di un treno prima di salvarlo nel database. Il codice contiene anche una tabella HTML con i campi <strong>id<\/strong>, <strong>title<\/strong>, <strong>created_at<\/strong> e <strong>updated_at<\/strong> di un treno all&#8217;interno del database.<\/p>\n<h2>Come usare la ricerca di Algolia<\/h2>\n<p>Per visualizzare la pagina, navigate su <a href=\"http:\/\/127.0.0.1:8000\/trains-lists\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/127.0.0.1:8000\/trains-lists<\/a> dal vostro browser web.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/train-model-data.png\" alt=\"Visualizzazione su Laravel Scout Algolia del modello nella pagina trains-lists page\" width=\"1600\" height=\"527\"><figcaption class=\"wp-caption-text\">Dati del modello di treno<\/figcaption><\/figure>\n<p>Il database al momento \u00e8 vuoto, quindi dovete inserire il titolo di un treno demo nel campo di input e fare clic su <strong>Create New Train<\/strong> per salvarlo.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/new-train-entry.png\" alt=\"Visualizzazione su Laravel Scout Algolia del campo per inserire un nuovo treno\" width=\"1600\" height=\"531\"><figcaption class=\"wp-caption-text\">Inserimento di un nuovo treno<\/figcaption><\/figure>\n<p>Per usare la funzione di ricerca, digitate una parola chiave tra i titoli dei treni salvati nel campo di immissione <strong>Enter Title For Search<\/strong> e fate clic su <strong>Search<\/strong>.<\/p>\n<p>Come mostrato nell&#8217;immagine seguente, verranno visualizzate solo le voci di ricerca che contengono la parola chiave nel titolo.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinsta.com\/wp-content\/uploads\/2023\/03\/search-feature-train-entry.png\" alt=\"Visualizzazione su Laravel Scout Algolia del campo di ricercare per trovare un treno\" width=\"1600\" height=\"533\"><figcaption class=\"wp-caption-text\">Usare la funzione di ricerca per trovare un treno<\/figcaption><\/figure>\n<h2>Meilisearch con Laravel Scout<\/h2>\n<p>Meilisearch \u00e8 un motore di ricerca open-source che si concentra sulla velocit\u00e0, sulle prestazioni e sul miglioramento dell&#8217;esperienza di sviluppo. Condivide diverse caratteristiche con Algolia, usa gli stessi algoritmi, le stesse strutture dati e le stesse ricerche, ma con un <a href=\"https:\/\/kinsta.com\/it\/blog\/miglior-linguaggio-di-programmazione\/\">linguaggio di programmazione<\/a> diverso.<\/p>\n<p>Potete creare e ospitare autonomamente un&#8217;istanza di Meilisearch all&#8217;interno della vostra infrastruttura on-premises o cloud. Meilisearch ha anche un&#8217;offerta cloud beta simile ad Algolia per chi vuole usare il prodotto senza gestirne l&#8217;infrastruttura.<\/p>\n<p>Nel tutorial, avete gi\u00e0 un&#8217;istanza locale di Meilisearch in esecuzione nei vostri container <a href=\"https:\/\/kinsta.com\/it\/blog\/cosa-e-docker\/\">Docker<\/a>. Ora estenderete la funzionalit\u00e0 di Laravel Scout per usare l&#8217;istanza di Meilisearch.<\/p>\n<p>Per aggiungere Meilisearch all&#8217;applicazione Laravel, eseguite il comando seguente nel terminale del progetto.<\/p>\n<pre><code class=\"language-bash\">composer require meilisearch\/meilisearch-php<\/code><\/pre>\n<p>Successivamente, dovrete modificare le variabili di Meilisearch all&#8217;interno del file <strong>.env<\/strong> per configurarlo.<\/p>\n<p>Sostituite le variabili <code>SCOUT_DRIVER<\/code>, <code>MEILISEARCH_HOST<\/code> e <code>MEILISEARCH_KEY<\/code> nel file <strong>.env<\/strong> con le seguenti.<\/p>\n<pre><code class=\"language-bash\">SCOUT_DRIVER=meilisearch\nMEILISEARCH_HOST=http:\/\/127.0.0.1:7700\nMEILISEARCH_KEY=LockKey<\/code><\/pre>\n<p>La chiave <code>SCOUT_DRIVER<\/code> specifica il driver che Scout deve usare, mentre <code>MEILISEARCH_HOST<\/code> rappresenta il dominio in cui \u00e8 in esecuzione la vostra istanza di Meilisearch. Anche se non \u00e8 necessario durante lo sviluppo, vi consigliamo di aggiungere la variabile <code>MEILISEARCH_KEY<\/code> in produzione.<\/p>\n<p><strong>Nota:<\/strong> Se usate Meilisearch come driver preferenziale, commentate l&#8217;ID e il Secret di Algolia.<\/p>\n<p>Dopo aver completato le configurazioni <strong>.env<\/strong>, dovete indicizzare i record preesistenti usando il comando Artisan riportato di seguito.<\/p>\n<pre><code class=\"language-bash\">php artisan scout:import \"AppModelsTrain\"<\/code><\/pre>\n<h2>Laravel Scout con il motore di database<\/h2>\n<p>Il <a href=\"https:\/\/laravel.com\/docs\/9.x\/scout#database-and-collection-engines\" target=\"_blank\" rel=\"noopener noreferrer\">motore di database<\/a> di Scout potrebbe essere pi\u00f9 adatto alle applicazioni che usano database pi\u00f9 piccoli o che gestiscono carichi di lavoro meno intensivi. Al momento, il motore di database supporta <a href=\"https:\/\/kinsta.com\/it\/blog\/postgresql-vs-mysql\/\">PostgreSQL e MySQL<\/a>.<\/p>\n<p>Questo motore usa clausole &#8220;where-like&#8221; e indici full-text sul vostro database esistente, consentendogli di trovare i risultati di ricerca pi\u00f9 rilevanti. Non \u00e8 necessario indicizzare i record quando si usa il motore di database.<\/p>\n<p>Per usare il motore di database, dovete impostare la variabile <code>SCOUT_DRIVER<\/code> <strong>.env<\/strong> sul database.<\/p>\n<p>Aprite il file <strong>.env<\/strong> all&#8217;interno dell&#8217;applicazione Laravel e modificate il valore della variabile <code>SCOUT_DRIVER<\/code>.<\/p>\n<pre><code class=\"language-bash\">SCOUT_DRIVER = database<\/code><\/pre>\n<p>Dopo aver modificato il driver del database, Scout passer\u00e0 a usare il motore del database per la ricerca full-text.<\/p>\n<h2>Motore di raccolta con Laravel Scout<\/h2>\n<p>Oltre al motore del database, Scout offre anche un <a href=\"https:\/\/laravel.com\/docs\/9.x\/scout#collection-engine\" target=\"_blank\" rel=\"noopener noreferrer\">motore di raccolta<\/a>. Questo motore usa le clausole &#8220;where&#8221; e il filtraggio delle raccolte per estrarre i risultati di ricerca pi\u00f9 rilevanti.<\/p>\n<p>A differenza del motore di database, il motore di raccolta supporta tutti i database relazionali supportati anche da Laravel.<\/p>\n<p>Potete usare il motore di raccolta impostando la variabile d&#8217;ambiente <code>SCOUT_DRIVER<\/code> a <code>collection<\/code> o specificando manualmente il driver di raccolta nel file di configurazione di Scout.<\/p>\n<pre><code class=\"language-bash\">SCOUT_DRIVER = collection<\/code><\/pre>\n<h2>Explorer con Elasticsearch<\/h2>\n<p>Grazie alla forza delle query Elasticsearch, Explorer \u00e8 un moderno driver Elasticsearch per Laravel Scout. Offre un driver Scout compatibile e vantaggi come l&#8217;archiviazione, la ricerca e l&#8217;analisi di enormi quantit\u00e0 di dati in tempo reale. Elasticsearch con Laravel offre risultati in millisecondi.<\/p>\n<p>Per usare il driver Elasticsearch Explorer nell\u2019applicazione Laravel, dovrete configurare il file boilerplate <strong>docker-compose.yml<\/strong> generato dallo script Laravel-Scout. Dovrete aggiungere le configurazioni aggiuntive per Elasticsearch e riavviare i container.<\/p>\n<p>Aprite il file <strong>docker-compose.yml<\/strong> e sostituite il suo contenuto con il seguente.<\/p>\n<pre><code class=\"language-yaml\"># For more information: https:\/\/laravel.com\/docs\/sail\nversion: '3'\nservices:\n\tlaravel.test:\n    \tbuild:\n        \tcontext: .\/vendor\/laravel\/sail\/runtimes\/8.1\n        \tdockerfile: Dockerfile\n        \targs:\n            \tWWWGROUP: '${WWWGROUP}'\n    \timage: sail-8.1\/app\n    \textra_hosts:\n        \t- 'host.docker.internal:host-gateway'\n    \tports:\n        \t- '${APP_PORT:-80}:80'\n        \t- '${VITE_PORT:-5173}:${VITE_PORT:-5173}'\n    \tenvironment:\n        \tWWWUSER: '${WWWUSER}'\n        \tLARAVEL_SAIL: 1\n        \tXDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'\n        \tXDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'\n    \tvolumes:\n        \t- '.:\/var\/www\/html'\n    \tnetworks:\n        \t- sail\n    \tdepends_on:\n        \t- mysql\n        \t- redis\n        \t- meilisearch\n        \t- mailhog\n        \t- selenium\n        \t- pgsql\n        \t- elasticsearch\n\n\tmysql:\n    \timage: 'mysql\/mysql-server:8.0'\n    \tports:\n        \t- '${FORWARD_DB_PORT:-3306}:3306'\n    \tenvironment:\n        \tMYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'\n        \tMYSQL_ROOT_HOST: \"%\"\n        \tMYSQL_DATABASE: '${DB_DATABASE}'\n        \tMYSQL_USER: '${DB_USERNAME}'\n        \tMYSQL_PASSWORD: '${DB_PASSWORD}'\n        \tMYSQL_ALLOW_EMPTY_PASSWORD: 1\n    \tvolumes:\n        \t- 'sail-mysql:\/var\/lib\/mysql'\n        \t- '.\/vendor\/laravel\/sail\/database\/mysql\/create-testing-database.sh:\/docker-entrypoint-initdb.d\/10-create-testing-database.sh'\n    \tnetworks:\n        \t- sail\n    \thealthcheck:\n        \ttest: [\"CMD\", \"mysqladmin\", \"ping\", \"-p${DB_PASSWORD}\"]\n        \tretries: 3\n        \ttimeout: 5s\n       \t \n\telasticsearch:\n    \timage: 'elasticsearch:7.13.4'\n    \tenvironment:\n        \t- discovery.type=single-node\n    \tports:\n        \t- '9200:9200'\n        \t- '9300:9300'\n    \tvolumes:\n        \t- 'sailelasticsearch:\/usr\/share\/elasticsearch\/data'\n    \tnetworks:\n        \t- sail\n\tkibana:\n    \timage: 'kibana:7.13.4'\n    \tenvironment:\n        \t- elasticsearch.hosts=http:\/\/elasticsearch:9200\n    \tports:\n        \t- '5601:5601'\n    \tnetworks:\n        \t- sail\n    \tdepends_on:\n        \t- elasticsearch\n\tredis:\n    \timage: 'redis:alpine'\n    \tports:\n        \t- '${FORWARD_REDIS_PORT:-6379}:6379'\n    \tvolumes:\n        \t- 'sail-redis:\/data'\n    \tnetworks:\n        \t- sail\n    \thealthcheck:\n        \ttest: [\"CMD\", \"redis-cli\", \"ping\"]\n        \tretries: 3\n        \ttimeout: 5s\n\tpgsql:\n    \timage: 'postgres:13'\n    \tports:\n        \t- '${FORWARD_DB_PORT:-5432}:5432'\n    \tenvironment:\n        \tPGPASSWORD: '${DB_PASSWORD:-secret}'\n        \tPOSTGRES_DB: '${DB_DATABASE}'\n        \tPOSTGRES_USER: '${DB_USERNAME}'\n        \tPOSTGRES_PASSWORD: '${DB_PASSWORD:-secret}'\n    \tvolumes:\n        \t- 'sailpgsql:\/var\/lib\/postgresql\/data'\n    \tnetworks:\n        \t- sail\n    \thealthcheck:\n        \ttest: [\"CMD\", \"pg_isready\", \"-q\", \"-d\", \"${DB_DATABASE}\", \"-U\", \"${DB_USERNAME}\"]\n        \tretries: 3\n        \ttimeout: 5s\n\tmeilisearch:\n    \timage: 'getmeili\/meilisearch:latest'\n    \tports:\n        \t- '${FORWARD_MEILISEARCH_PORT:-7700}:7700'\n    \tvolumes:\n        \t- 'sail-meilisearch:\/meili_data'\n    \tnetworks:\n        \t- sail\n    \thealthcheck:\n        \ttest: [\"CMD\", \"wget\", \"--no-verbose\", \"--spider\",  \"http:\/\/localhost:7700\/health\"]\n        \tretries: 3\n        \ttimeout: 5s\n\tmailhog:\n    \timage: 'mailhog\/mailhog:latest'\n    \tports:\n        \t- '${FORWARD_MAILHOG_PORT:-1025}:1025'\n        \t- '${FORWARD_MAILHOG_DASHBOARD_PORT:-8025}:8025'\n    \tnetworks:\n        \t- sail\n\tselenium:\n    \timage: 'selenium\/standalone-chrome'\n    \textra_hosts:\n        \t- 'host.docker.internal:host-gateway'\n    \tvolumes:\n        \t- '\/dev\/shm:\/dev\/shm'\n    \tnetworks:\n        \t- sail\nnetworks:\n\tsail:\n    \tdriver: bridge\nvolumes:\n\tsail-mysql:\n    \tdriver: local\n\tsail-redis:\n    \tdriver: local\n\tsail-meilisearch:\n    \tdriver: local\n\tsailpgsql:\n    \tdriver: local\n\tsailelasticsearch:\n    \tdriver: local <\/code><\/pre>\n<p>Quindi, eseguite il comando seguente per estrarre la nuova immagine di Elasticsearch che avete aggiunto al file <strong>docker-compose.yml<\/strong>.<\/p>\n<pre><code class=\"language-bash\">docker-compose up<\/code><\/pre>\n<p>Ora eseguite il comando Composer qui sotto per installare Explorer nel progetto.<\/p>\n<pre><code class=\"language-bash\">composer require jeroen-g\/explorer<\/code><\/pre>\n<p>Dovete anche creare un file di configurazione per il driver di Explorer.<\/p>\n<p>Eseguite il comando Artisan qui sotto per generare un file <strong>explorer.config<\/strong> per memorizzare le configurazioni.<\/p>\n<pre><code class=\"language-bash\">php artisan vendor:publish --tag=explorer.config<\/code><\/pre>\n<p>Il file di configurazione generato sopra sar\u00e0 disponibile nella directory <strong>\/config<\/strong>.<\/p>\n<p>Nel file <strong>config\/explorer.php<\/strong> potete fare riferimento al vostro modello usando la chiave <code>indexes<\/code>.<\/p>\n<pre><code class=\"language-php\">'indexes' =&gt; [\n    \tAppModelsTrain::class\n],<\/code><\/pre>\n<p>Cambiate il valore della variabile <code>SCOUT_DRIVER<\/code> nel file <strong>.env<\/strong> in <code>elastic<\/code> per configurare Scout in modo che usi il driver Explorer.<\/p>\n<pre><code class=\"language-bash\">SCOUT_DRIVER = elastic<\/code><\/pre>\n<p>A questo punto, userete Explorer all&#8217;interno del modello <code>Train<\/code> implementando l&#8217;interfaccia Explorer e sovrascrivendo il metodo <code>mappableAs()<\/code>.<\/p>\n<p>Aprite il file <strong>Train.php<\/strong> nella cartella <strong>App &gt; Models<\/strong> e sostituite il codice esistente con il codice seguente.<\/p>\n<pre><code class=\"language-php\">&lt;?php\nnamespace AppModels;\n \nuse IlluminateDatabaseEloquentFactoriesHasFactory;\nuse IlluminateDatabaseEloquentModel;\nuse JeroenGExplorerApplicationExplored;\nuse LaravelScoutSearchable;\n \nclass Train extends Model implements Explored\n{\n\tuse HasFactory;\n\tuse Searchable;\n \n\tprotected $fillable = ['title'];\n \n\tpublic function mappableAs(): array\n\t{\n    \treturn [\n   \t\t 'id'=&gt;$this-&gt;Id,\n   \t\t 'title' =&gt; $this-&gt;title,\n    \t];\n\t}\n} <\/code><\/pre>\n<p>Con il codice aggiunto sopra, ora potete usare Explorer per cercare il testo all&#8217;interno del modello <code>Train<\/code>.<\/p>\n\n<h2>Riepilogo<\/h2>\n<p>Per chi sviluppa in PHP, Laravel e i componenti aggiuntivi come Scout semplificano l&#8217;integrazione di funzionalit\u00e0 di ricerca full-text veloci e robuste. Grazie al Database Engine, al Collection Engine e alle funzionalit\u00e0 di Meilisearch ed Elasticsearch, potete interagire con il database della vostra applicazione e implementare meccanismi di ricerca avanzati in pochi millisecondi.<\/p>\n<p>Grazie alla gestione e all&#8217;aggiornamento del database, i vostri utenti avranno un&#8217;esperienza ottimale e il vostro codice rimarr\u00e0 pulito ed efficiente.<\/p>\n<p>Con le nostre soluzioni di <a href=\"https:\/\/kinsta.com\/it\/changelog\/hosting-applicazioni-database\/\">Hosting di Applicazioni e Database<\/a>, Kinsta \u00e8 il punto di riferimento unico per tutte le esigenze di sviluppo con Laravel. <a href=\"https:\/\/sevalla.com\/application-hosting\/\">I primi 20 dollari li offriamo noi<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Il framework Laravel \u00e8 diventato una risorsa fondamentale per chi realizza servizi web. Essendo uno strumento open-source, Laravel offre una miriade di funzionalit\u00e0 pronte all&#8217;uso che &#8230;<\/p>\n","protected":false},"author":199,"featured_media":68932,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[26020],"class_list":["post-68931","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","topic-laravel"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v24.6 (Yoast SEO v24.6) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Come Usare Laravel Scout per Abilitare la Ricerca Full-Text - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Scopri tutto su Laravel Scout, come installarlo in un progetto Laravel e come usare la libreria per abilitare la ricerca full-text.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/\" \/>\n<meta property=\"og:locale\" content=\"it_IT\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Come Usare Laravel Scout per Abilitare la Ricerca Full-Text\" \/>\n<meta property=\"og:description\" content=\"Scopri tutto su Laravel Scout, come installarlo in un progetto Laravel e come usare la libreria per abilitare la ricerca full-text.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kinstaitalia\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-15T13:23:20+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-07-06T20:57:16+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/05\/laravel-scout.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1500\" \/>\n\t<meta property=\"og:image:height\" content=\"750\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Jeremy Holcombe\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:description\" content=\"Scopri tutto su Laravel Scout, come installarlo in un progetto Laravel e come usare la libreria per abilitare la ricerca full-text.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/05\/laravel-scout.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_IT\" \/>\n<meta name=\"twitter:label1\" content=\"Scritto da\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeremy Holcombe\" \/>\n\t<meta name=\"twitter:label2\" content=\"Tempo di lettura stimato\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minuti\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/\"},\"author\":{\"name\":\"Jeremy Holcombe\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\"},\"headline\":\"Come Usare Laravel Scout per Abilitare la Ricerca Full-Text\",\"datePublished\":\"2023-05-15T13:23:20+00:00\",\"dateModified\":\"2023-07-06T20:57:16+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/\"},\"wordCount\":2309,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/05\/laravel-scout.jpg\",\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/\",\"url\":\"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/\",\"name\":\"Come Usare Laravel Scout per Abilitare la Ricerca Full-Text - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/it\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/05\/laravel-scout.jpg\",\"datePublished\":\"2023-05-15T13:23:20+00:00\",\"dateModified\":\"2023-07-06T20:57:16+00:00\",\"description\":\"Scopri tutto su Laravel Scout, come installarlo in un progetto Laravel e come usare la libreria per abilitare la ricerca full-text.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/#breadcrumb\"},\"inLanguage\":\"it-IT\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/05\/laravel-scout.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/05\/laravel-scout.jpg\",\"width\":1500,\"height\":750},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/it\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinsta.com\/it\/argomenti\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Come Usare Laravel Scout per Abilitare la Ricerca Full-Text\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/it\/#website\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Soluzioni di hosting premium, veloci e sicure\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/it\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/it\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"it-IT\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/it\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/it\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kinstaitalia\/\",\"https:\/\/x.com\/Kinsta_IT\",\"https:\/\/www.instagram.com\/kinstahosting\/\",\"https:\/\/www.linkedin.com\/company\/kinsta\/\",\"https:\/\/www.pinterest.com\/kinstahosting\/\",\"https:\/\/www.youtube.com\/c\/Kinsta\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\",\"name\":\"Jeremy Holcombe\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"it-IT\",\"@id\":\"https:\/\/kinsta.com\/it\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g\",\"caption\":\"Jeremy Holcombe\"},\"description\":\"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/jeremyholcombe\/\"],\"url\":\"https:\/\/kinsta.com\/it\/blog\/author\/jeremyholcombe\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Come Usare Laravel Scout per Abilitare la Ricerca Full-Text - Kinsta\u00ae","description":"Scopri tutto su Laravel Scout, come installarlo in un progetto Laravel e come usare la libreria per abilitare la ricerca full-text.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/","og_locale":"it_IT","og_type":"article","og_title":"Come Usare Laravel Scout per Abilitare la Ricerca Full-Text","og_description":"Scopri tutto su Laravel Scout, come installarlo in un progetto Laravel e come usare la libreria per abilitare la ricerca full-text.","og_url":"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/kinstaitalia\/","article_published_time":"2023-05-15T13:23:20+00:00","article_modified_time":"2023-07-06T20:57:16+00:00","og_image":[{"width":1500,"height":750,"url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/05\/laravel-scout.jpg","type":"image\/jpeg"}],"author":"Jeremy Holcombe","twitter_card":"summary_large_image","twitter_description":"Scopri tutto su Laravel Scout, come installarlo in un progetto Laravel e come usare la libreria per abilitare la ricerca full-text.","twitter_image":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/05\/laravel-scout.jpg","twitter_creator":"@Kinsta_IT","twitter_site":"@Kinsta_IT","twitter_misc":{"Scritto da":"Jeremy Holcombe","Tempo di lettura stimato":"15 minuti"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/"},"author":{"name":"Jeremy Holcombe","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21"},"headline":"Come Usare Laravel Scout per Abilitare la Ricerca Full-Text","datePublished":"2023-05-15T13:23:20+00:00","dateModified":"2023-07-06T20:57:16+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/"},"wordCount":2309,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/05\/laravel-scout.jpg","inLanguage":"it-IT","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/it\/blog\/laravel-scout\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/","url":"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/","name":"Come Usare Laravel Scout per Abilitare la Ricerca Full-Text - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/it\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/05\/laravel-scout.jpg","datePublished":"2023-05-15T13:23:20+00:00","dateModified":"2023-07-06T20:57:16+00:00","description":"Scopri tutto su Laravel Scout, come installarlo in un progetto Laravel e come usare la libreria per abilitare la ricerca full-text.","breadcrumb":{"@id":"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/#breadcrumb"},"inLanguage":"it-IT","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/it\/blog\/laravel-scout\/"]}]},{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/#primaryimage","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/05\/laravel-scout.jpg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/05\/laravel-scout.jpg","width":1500,"height":750},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/it\/blog\/laravel-scout\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/it\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinsta.com\/it\/argomenti\/laravel\/"},{"@type":"ListItem","position":3,"name":"Come Usare Laravel Scout per Abilitare la Ricerca Full-Text"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/it\/#website","url":"https:\/\/kinsta.com\/it\/","name":"Kinsta\u00ae","description":"Soluzioni di hosting premium, veloci e sicure","publisher":{"@id":"https:\/\/kinsta.com\/it\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/it\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"it-IT"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/it\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/it\/","logo":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/it\/wp-content\/uploads\/sites\/2\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/it\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kinstaitalia\/","https:\/\/x.com\/Kinsta_IT","https:\/\/www.instagram.com\/kinstahosting\/","https:\/\/www.linkedin.com\/company\/kinsta\/","https:\/\/www.pinterest.com\/kinstahosting\/","https:\/\/www.youtube.com\/c\/Kinsta"]},{"@type":"Person","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21","name":"Jeremy Holcombe","image":{"@type":"ImageObject","inLanguage":"it-IT","@id":"https:\/\/kinsta.com\/it\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/0e17001f3bb37dbbe54fceef9bb547fa?s=96&d=mm&r=g","caption":"Jeremy Holcombe"},"description":"Senior Editor at Kinsta, WordPress Web Developer, and Content Writer. Outside of all things WordPress, I enjoy the beach, golf, and movies. I also have tall people problems.","sameAs":["https:\/\/www.linkedin.com\/in\/jeremyholcombe\/"],"url":"https:\/\/kinsta.com\/it\/blog\/author\/jeremyholcombe\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/68931","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/users\/199"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/comments?post=68931"}],"version-history":[{"count":15,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/68931\/revisions"}],"predecessor-version":[{"id":71045,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/posts\/68931\/revisions\/71045"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/68931\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/68931\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/68931\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/68931\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/68931\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/68931\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/68931\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/68931\/translations\/es"},{"href":"https:\/\/kinsta.com\/it\/wp-json\/kinsta\/v1\/posts\/68931\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media\/68932"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/media?parent=68931"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/tags?post=68931"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/it\/wp-json\/wp\/v2\/topic?post=68931"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}