{"id":52518,"date":"2023-05-15T15:23:34","date_gmt":"2023-05-15T13:23:34","guid":{"rendered":"https:\/\/kinsta.com\/nl\/?p=52518&#038;preview=true&#038;preview_id=52518"},"modified":"2023-07-06T14:37:55","modified_gmt":"2023-07-06T12:37:55","slug":"laravel-scout","status":"publish","type":"post","link":"https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/","title":{"rendered":"Laravel Scout gebruiken om full-text zoeken mogelijk te maken"},"content":{"rendered":"<p>Het <a href=\"https:\/\/kinsta.com\/nl\/blog\/wat-is-laravel\/\">Laravel framework<\/a> is een go-to bron geworden voor developers die webdiensten bouwen.<\/p>\n<p>Als open-source tool biedt Laravel een groot aantal out-of-the-box functionaliteiten waarmee developers robuuste en functionele applicaties kunnen bouwen.<\/p>\n<p>Een van de functionaliteiten is <a href=\"https:\/\/laravel.com\/docs\/9.x\/scout\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel Scout<\/a>, een bibliotheek voor het beheer van zoekindexen voor je applicatie. Door zijn flexibiliteit kunnen developers de configuraties nauwkeurig afstemmen en kiezen uit Algolia, Meilisearch, MySQL of <a href=\"https:\/\/sevalla.com\/database-hosting\/\">Postgres<\/a> drivers om de indexen op te slaan.<\/p>\n<p>Hier gaan we dieper in op deze tool en leren we je hoe je ondersteuning voor full-text zoeken toevoegt aan een Laravel applicatie via de driver. Je zult een demo Laravel applicatie modelleren voor het opslaan van de naam van mockup trains en dan Laravel Scout gebruiken om een zoekopdracht aan de applicatie toe te voegen.<\/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>Vereisten<\/h2>\n<p>Om alles te kunnen volgen moet je beschikken over:<\/p>\n<ul>\n<li>De PHP compiler op je computer ge\u00efnstalleerd hebben. Deze tutorial gebruikt PHP versie 8.1.<\/li>\n<li>De Docker engine of Docker Desktop &#8211; op je computer ge\u00efnstalleerd<\/li>\n<li>Een <a href=\"http:\/\/algolia.com\" target=\"_blank\" rel=\"noopener noreferrer\">Algolia<\/a> cloud account, die je gratis kunt aanmaken<\/li>\n<\/ul>\n\n<h2>Zo installeer je Scout in een Laravel project<\/h2>\n<p>Om Scout te gebruiken moet je eerst een Laravel applicatie maken waarin je van plan bent de zoekfunctionaliteit toe te voegen. Het Laravel-Scout Bash script bevat de commando&#8217;s om een Laravel applicatie te genereren binnen een Docker container. Door Docker te gebruiken hoef je geen extra ondersteunende software te installeren, zoals een MySQL database.<\/p>\n<p>Het Laravel-Scout script gebruikt de Bash scripttaal, dus je moet het uitvoeren in een Linux omgeving. Als je Windows draait, zorg er dan voor dat je Windows Subsystem for Linux (WSL) <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/wsl\/install\" target=\"_blank\" rel=\"noopener noreferrer\">configureert<\/a>.<\/p>\n<p>Als je WSL gebruikt, voer dan het volgende commando uit in je terminal om de Linux distributie van je voorkeur in te stellen.<\/p>\n<pre><code class=\"language-bash\">wsl -s ubuntu<\/code><\/pre>\n<p>Navigeer vervolgens naar de locatie op je computer waar je het project wilt plaatsen. Het Laravel-Scout script zal hier een projectmap genereren. In het onderstaande voorbeeld maakt het Laravel-Scout script een map aan binnen de <strong>desktop map<\/strong>.<\/p>\n<pre><code class=\"language-bash\">cd \/desktop<\/code><\/pre>\n<p>Voer het onderstaande commando uit om het Laravel-Scout script uit te voeren. Het zal een Dockerized applicatie met de nodige boilerplate code steigeren.<\/p>\n<pre><code class=\"language-bash\">curl -s https:\/\/laravel.build\/laravel-scout-app | bash<\/code><\/pre>\n<p>Verander na de uitvoering je map met <code>cd laravel-scout-app<\/code>. Voer dan het commando <code>sail-up<\/code> uit binnen de projectmap om de Docker containers voor je applicatie te starten.<\/p>\n<p><strong>Opmerking:<\/strong> Op veel Linux distributies moet je misschien het onderstaande commando uitvoeren met het <code>sudo<\/code> commando om verhoogde privileges te starten.<\/p>\n<pre><code class=\"language-bash\">.\/vendor\/bin\/sail up<\/code><\/pre>\n<p>Je kunt een foutmelding tegenkomen:<\/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=\"Foutmelding dat de poort al is toegewezen.\" width=\"307\" height=\"19\"><figcaption class=\"wp-caption-text\">Foutmelding dat de poort al is toegewezen.<\/figcaption><\/figure>\n<p>Om dit op te lossen kun je de variabele <code>APP_PORT<\/code> gebruiken om een poort aan te geven binnen het commando <code>sail up<\/code>:<\/p>\n<pre><code class=\"language-bash\">APP_PORT=3001 .\/vendor\/bin\/sail up<\/code><\/pre>\n<p>Voer vervolgens het onderstaande commando uit om de applicatie via Artisan op de PHP server uit te voeren.<\/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=\"De Laravel applicatie leveren met Artisan\" width=\"1600\" height=\"387\"><figcaption class=\"wp-caption-text\">De Laravel applicatie leveren met Artisan<\/figcaption><\/figure>\n<p>Navigeer vanuit je webbrowser naar de draaiende applicatie op http:\/\/127.0.0.1:8000. De applicatie toont de Laravel welkomstpagina op de standaardroute.<\/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=\"Welkomstpagina van de Laravel applicatie\" width=\"1328\" height=\"900\"><figcaption class=\"wp-caption-text\">Welkomstpagina van de Laravel applicatie<\/figcaption><\/figure>\n<h2>Zo voeg je Laravel Scout toe aan de applicatie<\/h2>\n<p>Voer in je terminal het commando in om de <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Composer<\/a> PHP package manager in te schakelen om Laravel Scout aan het project toe te voegen.<\/p>\n<pre><code class=\"language-bash\">composer require laravel\/scout<\/code><\/pre>\n<p>Publiceer vervolgens het Scout configuratiebestand met het commando vendor:publish. Het commando publiceert het <code>scout.php<\/code> configuratiebestand naar de <strong>config<\/strong>-directory van je applicatie.<\/p>\n<pre><code class=\"language-bash\"> php artisan vendor:publish --provider=\"<span id=\"urn:enhancement-80f98174-abd5-4711-8b0b-464194870dd1\" class=\"textannotation\">Laravel<\/span>\\Scout\\ScoutServiceProvider\"<\/code><\/pre>\n<p>Wijzig nu het boilerplate <strong>.env<\/strong> bestand zodat het een <code>SCOUT_QUEUE<\/code> boolean waarde bevat.<\/p>\n<p>De <code>SCOUT_QUEUE<\/code> waarde zal Scout in staat stellen om bewerkingen te enqueuen, waardoor betere reactietijden ontstaan. Zonder deze waarde zullen Scout drivers zoals <a href=\"https:\/\/www.meilisearch.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Meilisearch<\/a> nieuwe records niet onmiddellijk weergeven.<\/p>\n<pre><code class=\"language-bash\">SCOUT_QUEUE=true<\/code><\/pre>\n<p>Wijzig ook de variabele <code>DB_HOST<\/code> in het <strong>.env<\/strong> bestand om naar je localhost te wijzen om de <a href=\"https:\/\/kinsta.com\/nl\/blog\/sqlite-vs-mysql\/\">MySQL database<\/a> binnen de Docker containers te gebruiken.<\/p>\n<pre><code class=\"language-bash\">DB_HOST=127.0.0.1<\/code><\/pre>\n<h2>Een model markeren en de index configureren<\/h2>\n<p>Scout zet standaard geen doorzoekbare datamodellen aan. Je moet een model expliciet markeren als doorzoekbaar met de property <code><span id=\"urn:enhancement-c308f6c4-2587-4d55-bc22-cedb71dfcd29\" class=\"textannotation\">Laravel<\/span>\\Scout\\Searchable<\/code>.<\/p>\n<p>Je begint met het maken van een datamodel voor een demo <code>Train<\/code> applicatie om deze vervolgens te markeren als doorzoekbaar.<\/p>\n<h3>Een model maken<\/h3>\n<p>Voor de <code>Train<\/code> applicatie wil je de placeholder namen van elke beschikbare train opslaan.<\/p>\n<p>Voer het onderstaande Artisan commando uit om de migratie te genereren en geef het de naam <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=\"Een migratie maken met de naam create_trains_table\" width=\"1600\" height=\"145\"><figcaption class=\"wp-caption-text\">Een migratie maken met de naam create_trains_table<\/figcaption><\/figure>\n<p>De migratie wordt gegenereerd in een bestand waarvan de naam de opgegeven naam combineert met de huidige tijdstempel.<\/p>\n<p>Open het migratiebestand in de map <strong>database\/migrations\/<\/strong>.<\/p>\n<p>Voeg de volgende code toe na de kolom <code>id()<\/code> in regel 17 om een titelkolom toe te voegen. De code zal een titelkolom toevoegen.<\/p>\n<pre><code class=\"language-php\">$table-&gt;string('title');<\/code><\/pre>\n<p>Voer het onderstaande commando uit om de migratie toe te passen.<\/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=\"De Artisan migratie toepassen\" width=\"1600\" height=\"335\"><figcaption class=\"wp-caption-text\">De Artisan migratie toepassen<\/figcaption><\/figure>\n<p>Maak na het uitvoeren van de databasemigraties een bestand aan met de naam <strong>Train.php<\/strong> in de map <strong>app\/Models\/<\/strong>.<\/p>\n<h3>De LaravelScoutSearchable property toevoegen<\/h3>\n<p>Markeer het <code>Train<\/code> model voor zoeken door de <code>LaravelScoutSearchable<\/code> property aan het model toe te voegen, zoals hieronder getoond.<\/p>\n<pre><code class=\"language-php\">&lt;?php\nnamespace App\\Models;\nuse Illuminate\\<span id=\"urn:enhancement-16c5134e-b20a-4f93-93cd-95e2abdf46cb\" class=\"textannotation\">Database<\/span>\\Eloquent\\Model;\nuse <span id=\"urn:enhancement-554ca936-6018-46e2-aa7e-8b87b6c6242f\" class=\"textannotation\">Laravel<\/span>\\Scout\\Searchable;\n\nclass Train extends Model\n{\n    use Searchable;\n    public $fillable = ['title'];<\/code><\/pre>\n<p>Ook moet je de zoekindexen configureren door de methode <code>searchable<\/code> te overschrijven. Het standaard gedrag van Scout zou het model persisten om overeen te komen met de naam van de modeltabel.<\/p>\n<p>Voeg dus de volgende code toe aan het bestand <strong>Train.php<\/strong> onder de code van het vorige blok.<\/p>\n<pre><code class=\"language-php\">\/**\n     * Retrieve the index name for the model.\n     *\n     * @return string\n    *\/\n    public function searchableAs()\n    {\n        return 'trains_index';\n   }\n}<\/code><\/pre>\n<h2>Zo gebruik je Algolia met Scout<\/h2>\n<p>Voor de eerste full-text zoekopdracht met Laravel Scout gebruik je de <a href=\"https:\/\/www.algolia.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Algolia<\/a> driver. Algolia is een software as a service (SaaS) platform dat gebruikt wordt om grote hoeveelheden gegevens te doorzoeken. Het biedt een webdashboard voor developers om hun zoekindexen te beheren en een robuuste API waartoe je toegang hebt via een software development kit (SDK) in de programmeertaal van je voorkeur.<\/p>\n<p>Binnen de Laravel applicatie gebruik je het Algolia <a href=\"https:\/\/github.com\/algolia\/algoliasearch-client-php\" target=\"_blank\" rel=\"noopener noreferrer\">client pakket<\/a> voor PHP.<\/p>\n<h3>Algolia instellen<\/h3>\n<p>Eerst moet je het Algolia <a href=\"https:\/\/github.com\/algolia\/algoliasearch-client-php\" target=\"_blank\" rel=\"noopener noreferrer\">PHP search client pakket<\/a> voor je applicatie installeren.<\/p>\n<p>Voer het onderstaande commando uit.<\/p>\n<pre><code class=\"language-bash\">composer require algolia\/algoliasearch-client-php<\/code><\/pre>\n<p>Vervolgens moet je je Application ID en Secret API Key credentials van Algolia instellen in het <strong>.env<\/strong> bestand.<\/p>\n<p>Navigeer met je webbrowser naar je Algolia dashboard om de Application ID en Secret API Key credentials te verkrijgen.<\/p>\n<p>Klik op <b>Settings <\/b>onderaan de linker zijbalk om naar de <b>Settings <\/b>pagina te navigeren.<\/p>\n<p>Klik vervolgens op <strong>API Keys<\/strong> binnen de <strong>Team and Access <\/strong>sectie van de Settings pagina om de sleutels voor je Algolia account te bekijken.<\/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=\"Pagina API sleutels op Algolia Cloud\" width=\"1600\" height=\"1020\"><figcaption class=\"wp-caption-text\">Pagina API keys op Algolia Cloud<\/figcaption><\/figure>\n<p>Noteer op de API Keys pagina de <strong>Application ID<\/strong> en <strong>Admin API Key<\/strong> waarden. Je zult deze credentials gebruiken om de verbinding tussen de Laravel applicatie en Algolia te authenticeren.<\/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=\"Het Application ID en de Admin API Keys bekijken op de Algolia API Keys pagina\" width=\"1600\" height=\"868\"><figcaption class=\"wp-caption-text\">Application ID en Admin API Keys<\/figcaption><\/figure>\n<p>Voeg de onderstaande code toe aan je .env bestand met je code editor en vervang de placeholders door de corresponderende Algolia API secrets.<\/p>\n<pre><code class=\"language-bash\">ALGOLIA_APP_ID=APPLICATION_ID\nALGOLIA_SECRET=ADMIN_API_KEY<\/code><\/pre>\n<p>Vervang ook de variabele <code>SCOUT_DRIVER<\/code> door onderstaande code om de waarde te veranderen van <code>meilisearch<\/code> in <code>algolia<\/code>. Het veranderen van deze waarde zal Scout instrueren om de Algolia driver te gebruiken.<\/p>\n<pre><code class=\"language-bash\">SCOUT_DRIVER=algolia<\/code><\/pre>\n<h2>Zo maak je controllers voor je applicatie aan<\/h2>\n<p>Maak in de map <strong>app\/Http\/Controllers\/<\/strong> een bestand <strong>TrainSearchController.php<\/strong> om een controller voor de applicatie op te slaan. De controller zal gegevens opsommen en toevoegen aan het <code>Train<\/code> model.<\/p>\n<p>Voeg het volgende codeblok toe aan het bestand <strong>TrainSearchController.php<\/strong> om de controller te bouwen.<\/p>\n<pre><code class=\"language-php\">&lt;?php\n<span id=\"urn:enhancement-53731a17-0a7c-447a-8c82-7f8f921b1551\" class=\"textannotation\">namespace<\/span> <span id=\"urn:enhancement-2076e7b8-7bd4-408c-86f5-39d468dc5b9f\" class=\"textannotation\">App<\/span>\\<span id=\"urn:enhancement-dab07522-3520-4d60-90f6-fc1f7a41840d\" class=\"textannotation\">Http<\/span>\\Controllers;\nuse Illuminate\\<span id=\"urn:enhancement-0d9fe340-49a7-47cf-8eb2-fe5cf155613d\" class=\"textannotation\">Http<\/span>\\Request;\nuse <span id=\"urn:enhancement-613ee8cf-c638-4be8-82fb-82b48fac08e6\" class=\"textannotation\">App<\/span>\\<span id=\"urn:enhancement-e989b3d1-5140-4443-b0f7-4dd7000f4379\" class=\"textannotation\">Http<\/span>\\Requests;\nuse <span id=\"urn:enhancement-b447de8d-f891-445c-83e9-1fc0bc972666\" class=\"textannotation\">App<\/span>\\Models\\Train;\n\nclass TrainSearchController extends Controller\n{\n    \/**\n     * Get the index name for the model.\n     *\n     * @return string\n    *\/\n    public function index(Request $request)\n    {\n        if($request-&gt;has('titlesearch')){\n            $trains = Train::search($request-&gt;titlesearch)\n                -&gt;paginate(6);\n        }else{\n            $trains = Train::paginate(6);\n        }\n        return view('Train-search',compact('trains'));\n    }\n\n    \/**\n     * Get the index name for the model.\n     *\n     * @return string\n    *\/\n    public function create(Request $request)\n    {\n        $this-&gt;validate($request,['title'=&gt;'required']);\n\n        $trains = Train::create($request-&gt;all());\n        return back();\n    }\n}<\/code><\/pre>\n<h2>Zo maak je de routes aan voor je applicatie<\/h2>\n<p>In deze stap maak je de routes voor het listen en toevoegen van nieuwe trains aan de database.<\/p>\n<p>Open je <strong>routes\/web.php<\/strong> bestand en vervang de bestaande code door het onderstaande blok.<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nuse Illuminate\\Support\\Facades\\Route;\nuse <span id=\"urn:enhancement-f99799ee-457b-4ef0-8888-538da815876d\" class=\"textannotation\">App<\/span>\\<span id=\"urn:enhancement-87346fa8-3c5c-471f-b005-eed177371738\" class=\"textannotation\">Http<\/span>\\Controllers\\TrainSearchController;\n\nRoute::get('\/', function () {\n    return 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>De bovenstaande code definieert twee routes in de applicatie. Het <code>GET<\/code> verzoek voor de <code>\/trains-lists<\/code> route somt alle opgeslagen traindata op. Het <code>POST<\/code> verzoek voor de <code>\/create-item<\/code> route cre\u00ebert nieuwe traindata.<\/p>\n<h2>Zo maak je de views aan voor je applicatie<\/h2>\n<p>Maak een bestand aan in de map <strong>resources\/views\/<\/strong> en noem het <strong>Train-search.blade.php<\/strong>. Het bestand toont de gebruikersinterface voor de zoekfunctie.<\/p>\n<p>Voeg de inhoud van het onderstaande codeblok toe aan het bestand <strong>Train-search.blade.php<\/strong> om een enkele pagina te maken voor de zoekfunctionaliteit.<\/p>\n<pre><code class=\"language-html\">&lt;!DOCTYPE html&gt;\n&lt;html&gt;\n&lt;head&gt;\n    &lt;title&gt;Laravel - Laravel Scout Algolia Search Example&lt;\/title&gt;\n    &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    &lt;h2 class=\"text-bold\"&gt;Laravel Full-Text Search Using Scout &lt;\/h2&gt;&lt;br\/&gt;\n    &lt;form method=\"POST\" action=\"{{ route('create-item') }}\" autocomplete=\"off\"&gt;\n        @if(count($errors))\n            &lt;div class=\"alert alert-danger\"&gt;\n                &lt;strong&gt;Whoops!&lt;\/strong&gt; There is an error with your input.\n                &lt;br\/&gt;\n                &lt;ul&gt;\n                    @foreach($errors-&gt;all() as $error)\n                    &lt;li&gt;{{ $error }}&lt;\/li&gt;\n                    @endforeach\n                &lt;\/ul&gt;\n            &lt;\/div&gt;\n        @endif\n\n        &lt;input type=\"hidden\" name=\"_token\" value=\"{{ csrf_token() }}\"&gt;\n\n        &lt;div class=\"row\"&gt;\n            &lt;div class=\"col-md-6\"&gt;\n                &lt;div class=\"form-group {{ $errors-&gt;has('title') ? 'has-error' : '' }}\"&gt;\n                    &lt;input type=\"text\" id=\"title\" name=\"title\" class=\"form-control\" placeholder=\"Enter Title\" value=\"{{ old('title') }}\"&gt;\n                    &lt;span class=\"text-danger\"&gt;{{ $errors-&gt;first('title') }}&lt;\/span&gt;\n                &lt;\/div&gt;\n            &lt;\/div&gt;\n            &lt;div class=\"col-md-6\"&gt;\n                &lt;div class=\"form-group\"&gt;\n                    &lt;button class=\"btn btn-primary\"&gt;Create New Train&lt;\/button&gt;\n                &lt;\/div&gt;\n            &lt;\/div&gt;\n        &lt;\/div&gt;\n    &lt;\/form&gt;\n\n    &lt;div class=\"panel panel-primary\"&gt;\n      &lt;div class=\"panel-heading\"&gt;Train Management&lt;\/div&gt;\n      &lt;div class=\"panel-body\"&gt;\n            &lt;form method=\"GET\" action=\"{{ route('trains-lists') }}\"&gt;\n\n                &lt;div class=\"row\"&gt;\n                    &lt;div class=\"col-md-6\"&gt;\n                        &lt;div class=\"form-group\"&gt;\n                            &lt;input type=\"text\" name=\"titlesearch\" class=\"form-control\" placeholder=\"Enter Title For Search\" value=\"{{ old('titlesearch') }}\"&gt;\n                        &lt;\/div&gt;\n                    &lt;\/div&gt;\n                    &lt;div class=\"col-md-6\"&gt;\n                        &lt;div class=\"form-group\"&gt;\n                            &lt;button class=\"btn btn-primary\"&gt;Search&lt;\/button&gt;\n                        &lt;\/div&gt;\n                    &lt;\/div&gt;\n                &lt;\/div&gt;\n            &lt;\/form&gt;\n\n            &lt;table class=\"table\"&gt;\n                &lt;thead&gt;\n                    &lt;th&gt;Id&lt;\/th&gt;\n                    &lt;th&gt;Train Title&lt;\/th&gt;\n                    &lt;th&gt;Creation Date&lt;\/th&gt;\n                    &lt;th&gt;Updated Date&lt;\/th&gt;\n                &lt;\/thead&gt;\n                &lt;tbody&gt;\n                    @if($trains-&gt;count())\n                        @foreach($trains as $key =&gt; $item)\n                            &lt;tr&gt;\n                                &lt;td&gt;{{ ++$key }}&lt;\/td&gt;\n                                &lt;td&gt;{{ $item-&gt;title }}&lt;\/td&gt;\n                                &lt;td&gt;{{ $item-&gt;created_at }}&lt;\/td&gt;\n                                &lt;td&gt;{{ $item-&gt;updated_at }}&lt;\/td&gt;\n                            &lt;\/tr&gt;\n                        @endforeach\n                    @else\n                        &lt;tr&gt;\n                            &lt;td colspan=\"4\"&gt;No train data available&lt;\/td&gt;\n                        &lt;\/tr&gt;\n                    @endif\n                &lt;\/tbody&gt;\n            &lt;\/table&gt;\n            {{ $trains-&gt;links() }}\n      &lt;\/div&gt;\n    &lt;\/div&gt;\n&lt;\/div&gt;\n&lt;\/body&gt;\n&lt;\/html&gt;<\/code><\/pre>\n<p>De bovenstaande HTML code bevat een formulierelement met een invoerveld en een knop om de titel van een train in te typen voordat je die opslaat in de database. De code bevat ook een HTML tabel met de <strong>id<\/strong>, <strong>titel<\/strong>, <strong>created_at<\/strong>, en <strong>updated_at<\/strong> details van een train entry in de database.<\/p>\n<h2>Zo gebruik je de Algolia zoekfunctie<\/h2>\n<p>Navigeer naar <a href=\"http:\/\/127.0.0.1:8000\/trains-lists\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/127.0.0.1:8000\/trains-lists<\/a> vanuit je webbrowser om de pagina te bekijken.<\/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=\"De gegevens van het Train model bekijken op de pagina trains-lists\" width=\"1600\" height=\"527\"><figcaption class=\"wp-caption-text\">Train modeldata<\/figcaption><\/figure>\n<p>De database is momenteel leeg, dus je moet een titel van een demo train invoeren in het invoerveld en op <strong>Create New Train <\/strong>klikken om hem op te slaan.<\/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=\"Een nieuwe train invoeren\" width=\"1600\" height=\"531\"><figcaption class=\"wp-caption-text\">Een nieuwe train invoeren<\/figcaption><\/figure>\n<p>Om de zoekfunctie te gebruiken typ je een trefwoord uit opgeslagen traintitels in het invoerveld <strong>Enter Title For Search <\/strong>en klik je op <strong>Search<\/strong>.<\/p>\n<p>Zoals de afbeelding hieronder laat zien, worden alleen zoekacties met het trefwoord in de titel getoond.<\/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=\"De zoekfunctie gebruiken om een train-entry te vinden\" width=\"1600\" height=\"533\"><figcaption class=\"wp-caption-text\">De zoekfunctie gebruiken om een train-entry te vinden<\/figcaption><\/figure>\n<h2>Meilisearch met Laravel Scout<\/h2>\n<p>Meilisearch is een open-source zoekmachine gericht op snelheid, prestaties en een verbeterde ervaring voor developers. Het deelt verschillende functies met Algolia en gebruikt dezelfde algoritmen, gegevensstructuren en onderzoek &#8211; maar met een andere <a href=\"https:\/\/kinsta.com\/nl\/blog\/beste-programmeertaal-om-te-leren\/\">programmeertaal<\/a>.<\/p>\n<p>Developers kunnen een Meilisearch instance aanmaken en zelf hosten binnen hun on-premises of cloud-infrastructuur. Meilisearch heeft ook een beta-cloudaanbod vergelijkbaar met Algolia voor developers die het product willen gebruiken zonder de infrastructuur ervan te beheren.<\/p>\n<p>In de tutorial heb je al een lokale instance van Meilisearch draaien binnen je <a href=\"https:\/\/kinsta.com\/nl\/blog\/wat-is-docker\/\">Docker<\/a> containers. Je gaat nu de Laravel Scout functionaliteit uitbreiden om de Meilisearch instance te gebruiken.<\/p>\n<p>Om Meilisearch aan de Laravel applicatie toe te voegen, voer je onderstaand commando uit in je projectterminal.<\/p>\n<pre><code class=\"language-bash\">composer require meilisearch\/meilisearch-php<\/code><\/pre>\n<p>Vervolgens moet je de Meilisearch variabelen binnen het <strong>.env<\/strong> bestand aanpassen om het te configureren.<\/p>\n<p>Vervang de variabelen <code>SCOUT_DRIVER<\/code>, <code>MEILISEARCH_HOST<\/code>, en <code>MEILISEARCH_KEY<\/code> in het <strong>.env<\/strong> bestand door onderstaande.<\/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>De key <code>SCOUT_DRIVER<\/code> specificeert de driver die Scout moet gebruiken, terwijl <code>MEILISEARCH_HOST<\/code> het domein voorstelt waar je Meilisearch instantie draait. Hoewel niet vereist tijdens de ontwikkeling, wordt het toevoegen van de <code>MEILISEARCH_KEY<\/code> in productie aangeraden.<\/p>\n<p><strong>Opmerking:<\/strong> Je kan een comment out uitvoeren op de Algolia ID en Secret als je Meilisearch als voorkeurdriver gebruikt.<\/p>\n<p>Nadat je de <strong>.env<\/strong> configuraties hebt voltooid, moet je je reeds bestaande records indexeren met het Artisan commando hieronder.<\/p>\n<pre><code class=\"language-bash\">php artisan scout:import \"<span id=\"urn:enhancement-16895c7e-d26d-48ce-b715-b4ebb2d97782\" class=\"textannotation\">App<\/span>\\Models\\Train\"<\/code><\/pre>\n<h2>Laravel Scout met database-engine<\/h2>\n<p>De <a href=\"https:\/\/laravel.com\/docs\/9.x\/scout#database-and-collection-engines\" target=\"_blank\" rel=\"noopener noreferrer\">database-engine<\/a> van Scout is wellicht het meest geschikt voor applicaties die kleinere databases gebruiken of minder intensieve werklasten beheren. Momenteel ondersteunt de database-engine <a href=\"https:\/\/kinsta.com\/nl\/blog\/postgresql-vs-mysql\/\">PostgreSQL en MySQL<\/a>.<\/p>\n<p>Deze engine gebruikt &#8220;where-like&#8221; clauses en full-text indexen die die uitvoert op je bestaande database, waardoor hij de meest relevante zoekresultaten kan vinden. Je hoeft je records niet te indexeren als je de database-engine gebruikt.<\/p>\n<p>Om de database-engine te gebruiken, moet je je <code>SCOUT_DRIVER<\/code> <strong>.env<\/strong> variabele instellen op de database.<\/p>\n<p>Open het <strong>.env<\/strong> bestand binnen de Laravel applicatie en verander de waarde van de <code>SCOUT_DRIVER<\/code> variabele.<\/p>\n<pre><code class=\"language-bash\">SCOUT_DRIVER = database<\/code><\/pre>\n<p>Na het veranderen van je driver naar de database, zal Scout overschakelen naar het gebruik van de database engine voor full-text zoeken.<\/p>\n<h2>Laravel Scout met collection-engine<\/h2>\n<p>Naast de database-engine biedt Scout ook een <a href=\"https:\/\/laravel.com\/docs\/9.x\/scout#collection-engine\" target=\"_blank\" rel=\"noopener noreferrer\">collection-engine<\/a>. Deze engine gebruikt &#8220;where&#8221; clauses en collectionfiltering om de meest relevante zoekresultaten eruit te halen.<\/p>\n<p>In tegenstelling tot de database-engine, ondersteunt de collection-engine alle relationele databases die Laravel ook ondersteunt.<\/p>\n<p>Je kunt de collection-engine gebruiken door de <code>SCOUT_DRIVER<\/code> omgevingsvariabele in te stellen op <code>collection<\/code> of door handmatig de collection driver op te geven in het Scout configuratiebestand.<\/p>\n<pre><code class=\"language-bash\">SCOUT_DRIVER = collection<\/code><\/pre>\n<h2>Explorer met Elasticsearch<\/h2>\n<p>Met de kracht van Elasticsearch queries is Explorer een moderne Elasticsearch driver voor Laravel Scout. Het biedt een compatibele Scout driver en voordelen zoals het opslaan, doorzoeken en analyseren van enorme hoeveelheden data in real time. Elasticsearch met Laravel geeft je resultaten in milliseconden.<\/p>\n<p>Om de Elasticsearch Explorer driver in je Laravel applicatie te gebruiken, moet je het boilerplate <strong>docker-compose.yml<\/strong> bestand configureren dat het Laravel-Scout script genereerde. Je voegt de extra configuraties voor Elasticsearch toe en herstart de containers.<\/p>\n<p>Open je <strong>docker-compose.yml<\/strong> bestand en vervang de inhoud door het volgende.<\/p>\n<pre><code class=\"language-yaml\"># For more information: https:\/\/laravel.com\/docs\/sail\nversion: '3'\nservices:\n    laravel.test:\n        build:\n            context: .\/vendor\/laravel\/sail\/runtimes\/8.1\n            dockerfile: Dockerfile\n            args:\n                WWWGROUP: '${WWWGROUP}'\n        image: sail-8.1\/app\n        extra_hosts:\n            - 'host.docker.internal:host-gateway'\n        ports:\n            - '${APP_PORT:-80}:80'\n            - '${VITE_PORT:-5173}:${VITE_PORT:-5173}'\n        environment:\n            WWWUSER: '${WWWUSER}'\n            LARAVEL_SAIL: 1\n            XDEBUG_MODE: '${SAIL_XDEBUG_MODE:-off}'\n            XDEBUG_CONFIG: '${SAIL_XDEBUG_CONFIG:-client_host=host.docker.internal}'\n        volumes:\n            - '.:\/var\/www\/html'\n        networks:\n            - sail\n        depends_on:\n            - mysql\n            - redis\n            - meilisearch\n            - mailhog\n            - selenium\n            - pgsql\n            - elasticsearch\n\n    mysql:\n        image: 'mysql\/mysql-server:8.0'\n        ports:\n            - '${FORWARD_DB_PORT:-3306}:3306'\n        environment:\n            MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'\n            MYSQL_ROOT_HOST: \"%\"\n            MYSQL_DATABASE: '${DB_DATABASE}'\n            MYSQL_USER: '${DB_USERNAME}'\n            MYSQL_PASSWORD: '${DB_PASSWORD}'\n            MYSQL_ALLOW_EMPTY_PASSWORD: 1\n        volumes:\n            - 'sail-mysql:\/var\/lib\/mysql'\n            - '.\/vendor\/laravel\/sail\/database\/mysql\/create-testing-database.sh:\/docker-entrypoint-initdb.d\/10-create-testing-database.sh'\n        networks:\n            - sail\n        healthcheck:\n            test: [\"CMD\", \"mysqladmin\", \"ping\", \"-p${DB_PASSWORD}\"]\n            retries: 3\n            timeout: 5s\n            \n    elasticsearch:\n        image: 'elasticsearch:7.13.4'\n        environment:\n            - discovery.type=single-node\n        ports:\n            - '9200:9200'\n            - '9300:9300'\n        volumes:\n            - 'sailelasticsearch:\/usr\/share\/elasticsearch\/data'\n        networks:\n            - sail\n    kibana:\n        image: 'kibana:7.13.4'\n        environment:\n            - elasticsearch.hosts=http:\/\/elasticsearch:9200\n        ports:\n            - '5601:5601'\n        networks:\n            - sail\n        depends_on:\n            - elasticsearch\n    redis:\n        image: 'redis:alpine'\n        ports:\n            - '${FORWARD_REDIS_PORT:-6379}:6379'\n        volumes:\n            - 'sail-redis:\/data'\n        networks:\n            - sail\n        healthcheck:\n            test: [\"CMD\", \"redis-cli\", \"ping\"]\n            retries: 3\n            timeout: 5s\n    pgsql:\n        image: 'postgres:13'\n        ports:\n            - '${FORWARD_DB_PORT:-5432}:5432'\n        environment:\n            PGPASSWORD: '${DB_PASSWORD:-secret}'\n            POSTGRES_DB: '${DB_DATABASE}'\n            POSTGRES_USER: '${DB_USERNAME}'\n            POSTGRES_PASSWORD: '${DB_PASSWORD:-secret}'\n        volumes:\n            - 'sailpgsql:\/var\/lib\/postgresql\/data'\n        networks:\n            - sail\n        healthcheck:\n            test: [\"CMD\", \"pg_isready\", \"-q\", \"-d\", \"${DB_DATABASE}\", \"-U\", \"${DB_USERNAME}\"]\n            retries: 3\n            timeout: 5s\n    meilisearch:\n        image: 'getmeili\/meilisearch:latest'\n        ports:\n            - '${FORWARD_MEILISEARCH_PORT:-7700}:7700'\n        volumes:\n            - 'sail-meilisearch:\/meili_data'\n        networks:\n            - sail\n        healthcheck:\n            test: [\"CMD\", \"wget\", \"--no-verbose\", \"--spider\",  \"http:\/\/localhost:7700\/health\"]\n            retries: 3\n            timeout: 5s\n    mailhog:\n        image: 'mailhog\/mailhog:latest'\n        ports:\n            - '${FORWARD_MAILHOG_PORT:-1025}:1025'\n            - '${FORWARD_MAILHOG_DASHBOARD_PORT:-8025}:8025'\n        networks:\n            - sail\n    selenium:\n        image: 'selenium\/standalone-chrome'\n        extra_hosts:\n            - 'host.docker.internal:host-gateway'\n        volumes:\n            - '\/dev\/shm:\/dev\/shm'\n        networks:\n            - sail\nnetworks:\n    sail:\n        driver: bridge\nvolumes:\n    sail-mysql:\n        driver: local\n    sail-redis:\n        driver: local\n    sail-meilisearch:\n        driver: local\n    sailpgsql:\n        driver: local\n    sailelasticsearch:\n        driver: local <\/code><\/pre>\n<p>Voer vervolgens onderstaand commando uit om de nieuwe Elasticsearch image die je hebt toegevoegd aan het <strong>docker-compose.yml<\/strong> bestand op te halen.<\/p>\n<pre><code class=\"language-bash\">docker-compose up<\/code><\/pre>\n<p>Voer dan onderstaand Composer commando uit om Explorer in het project te installeren.<\/p>\n<pre><code class=\"language-bash\">composer require jeroen-g\/explorer<\/code><\/pre>\n<p>Je moet ook een configuratiebestand maken voor de Explorer driver.<\/p>\n<p>Voer het onderstaande Artisan commando uit om een <strong>explorer.config<\/strong> bestand te genereren voor het opslaan van de configuraties.<\/p>\n<pre><code class=\"language-bash\">php artisan vendor:publish --tag=explorer.config<\/code><\/pre>\n<p>Het hierboven gegenereerde configuratiebestand zal beschikbaar zijn in de map <strong>\/config<\/strong>.<\/p>\n<p>In je <strong>config\/explorer.php<\/strong> bestand kun je naar je model verwijzen met de <code>indexes<\/code> sleutel.<\/p>\n<pre><code class=\"language-php\">'indexes' =&gt; [\n        \\<span id=\"urn:enhancement-7421eee3-6617-4744-a0ba-ddedfcd91541\" class=\"textannotation\">App<\/span>\\Models\\Train::<span id=\"urn:enhancement-2d229586-c05b-4cd4-8ab7-86915dcf9078\" class=\"textannotation\">class<\/span>\n],<\/code><\/pre>\n<p>Verander de waarde van de variabele <code>SCOUT_DRIVER<\/code> in het <strong>.env<\/strong> bestand in <code>elastic<\/code> om Scout te configureren om de Explorer driver te gebruiken.<\/p>\n<pre><code class=\"language-bash\">SCOUT_DRIVER = elastic<\/code><\/pre>\n<p>Op dit punt gebruik je Explorer binnen het <code>Train<\/code> model door de Explorer interface te implementeren en de methode <code>mappableAs()<\/code> te overschrijven.<\/p>\n<p>Open het bestand <strong>Train.php<\/strong> in de map <strong>App &gt; Models <\/strong>en vervang de bestaande code door onderstaande code.<\/p>\n<pre><code class=\"language-php\">&lt;?php\nnamespace App\\Models;\n \nuse Illuminate\\<span id=\"urn:enhancement-8f32631f-9311-4de8-9c76-94ce35716161\" class=\"textannotation\">Database<\/span>\\Eloquent\\Factories\\HasFactory;\nuse Illuminate\\<span id=\"urn:enhancement-56417d61-31f6-4275-b4ab-b83ec5e3f186\" class=\"textannotation\">Database<\/span>\\Eloquent\\Model;\nuse JeroenG\\<span id=\"urn:enhancement-47f39028-9bee-458d-a827-8b84543e84f6\" class=\"textannotation\">Explorer<\/span>\\<span id=\"urn:enhancement-28116f06-4fe7-44bd-8503-dd1d02c5be93\" class=\"textannotation\">Application<\/span>\\Explored;\nuse <span id=\"urn:enhancement-6a7c9771-5ec4-43f2-b516-5007caef776e\" class=\"textannotation\">Laravel<\/span>\\Scout\\Searchable;\n \nclass Train extends Model implements Explored\n{\n    use HasFactory;\n    use Searchable;\n \n    protected $fillable = ['title'];\n \n    public function mappableAs(): array\n    {\n        return [\n        \t'id'=&gt;$this-&gt;Id,\n        \t'title' =&gt; $this-&gt;title,\n        ];\n    }\n} <\/code><\/pre>\n<p>Met de code die je hierboven hebt toegevoegd, kun je Explorer nu gebruiken om tekst te zoeken binnen het <code>Train<\/code> model.<\/p>\n\n<h2>Samenvatting<\/h2>\n<p>Voor PHP developers maken Laravel en add-ons als Scout het super eenvoudig om snelle, robuuste full-text zoekfunctionaliteit te integreren. Met de database-engine, collection-engine, en de mogelijkheden van Meilisearch en Elasticsearch kun je in luttele milliseconden communiceren met de database van je app en geavanceerde zoekmechanismen implementeren.<\/p>\n<p>Het naadloos beheren en bijwerken van je database betekent dat je gebruikers een optimale ervaring krijgen, terwijl je code strak en effici\u00ebnt blijft.<\/p>\n<p>Met onze <a href=\"https:\/\/kinsta.com\/nl\/changelog\/applicatie-database-hosting\/\">Applicatie en Database Hosting<\/a> oplossingen is Kinsta je one-stop shop voor al je moderne Laravel ontwikkelingsbehoeften. <a href=\"https:\/\/sevalla.com\/application-hosting\/\">De eerste 20 dollar krijg je van ons<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Het Laravel framework is een go-to bron geworden voor developers die webdiensten bouwen. Als open-source tool biedt Laravel een groot aantal out-of-the-box functionaliteiten waarmee developers robuuste &#8230;<\/p>\n","protected":false},"author":199,"featured_media":52519,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[866],"class_list":["post-52518","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>Laravel Scout gebruiken om full-text zoeken mogelijk te maken - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Leer alles over Laravel Scout, hoe je het installeert in een Laravel project, en hoe je de bibliotheek gebruikt om full-text zoeken mogelijk te maken.\" \/>\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\/nl\/blog\/laravel-scout\/\" \/>\n<meta property=\"og:locale\" content=\"nl_NL\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Laravel Scout gebruiken om full-text zoeken mogelijk te maken\" \/>\n<meta property=\"og:description\" content=\"Leer alles over Laravel Scout, hoe je het installeert in een Laravel project, en hoe je de bibliotheek gebruikt om full-text zoeken mogelijk te maken.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-15T13:23:34+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-07-06T12:37:55+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/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=\"Leer alles over Laravel Scout, hoe je het installeert in een Laravel project, en hoe je de bibliotheek gebruikt om full-text zoeken mogelijk te maken.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/05\/laravel-scout.jpg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_NL\" \/>\n<meta name=\"twitter:label1\" content=\"Geschreven door\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeremy Holcombe\" \/>\n\t<meta name=\"twitter:label2\" content=\"Geschatte leestijd\" \/>\n\t<meta name=\"twitter:data2\" content=\"15 minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/\"},\"author\":{\"name\":\"Jeremy Holcombe\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\"},\"headline\":\"Laravel Scout gebruiken om full-text zoeken mogelijk te maken\",\"datePublished\":\"2023-05-15T13:23:34+00:00\",\"dateModified\":\"2023-07-06T12:37:55+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/\"},\"wordCount\":2318,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/05\/laravel-scout.jpg\",\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/\",\"url\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/\",\"name\":\"Laravel Scout gebruiken om full-text zoeken mogelijk te maken - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/05\/laravel-scout.jpg\",\"datePublished\":\"2023-05-15T13:23:34+00:00\",\"dateModified\":\"2023-07-06T12:37:55+00:00\",\"description\":\"Leer alles over Laravel Scout, hoe je het installeert in een Laravel project, en hoe je de bibliotheek gebruikt om full-text zoeken mogelijk te maken.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/#breadcrumb\"},\"inLanguage\":\"nl-NL\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/#primaryimage\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/05\/laravel-scout.jpg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/05\/laravel-scout.jpg\",\"width\":1500,\"height\":750},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinsta.com\/nl\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinsta.com\/nl\/onderwerpen\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Laravel Scout gebruiken om full-text zoeken mogelijk te maken\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinsta.com\/nl\/#website\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Snelle, veilige, premium hostingoplossingen\",\"publisher\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinsta.com\/nl\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"nl-NL\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinsta.com\/nl\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinsta.com\/nl\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/\",\"https:\/\/x.com\/Kinsta_NL\",\"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\/nl\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\",\"name\":\"Jeremy Holcombe\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"nl-NL\",\"@id\":\"https:\/\/kinsta.com\/nl\/#\/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\/nl\/blog\/author\/jeremyholcombe\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Laravel Scout gebruiken om full-text zoeken mogelijk te maken - Kinsta\u00ae","description":"Leer alles over Laravel Scout, hoe je het installeert in een Laravel project, en hoe je de bibliotheek gebruikt om full-text zoeken mogelijk te maken.","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\/nl\/blog\/laravel-scout\/","og_locale":"nl_NL","og_type":"article","og_title":"Laravel Scout gebruiken om full-text zoeken mogelijk te maken","og_description":"Leer alles over Laravel Scout, hoe je het installeert in een Laravel project, en hoe je de bibliotheek gebruikt om full-text zoeken mogelijk te maken.","og_url":"https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","article_published_time":"2023-05-15T13:23:34+00:00","article_modified_time":"2023-07-06T12:37:55+00:00","og_image":[{"width":1500,"height":750,"url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/05\/laravel-scout.jpg","type":"image\/jpeg"}],"author":"Jeremy Holcombe","twitter_card":"summary_large_image","twitter_description":"Leer alles over Laravel Scout, hoe je het installeert in een Laravel project, en hoe je de bibliotheek gebruikt om full-text zoeken mogelijk te maken.","twitter_image":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/05\/laravel-scout.jpg","twitter_creator":"@Kinsta_NL","twitter_site":"@Kinsta_NL","twitter_misc":{"Geschreven door":"Jeremy Holcombe","Geschatte leestijd":"15 minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/#article","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/"},"author":{"name":"Jeremy Holcombe","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21"},"headline":"Laravel Scout gebruiken om full-text zoeken mogelijk te maken","datePublished":"2023-05-15T13:23:34+00:00","dateModified":"2023-07-06T12:37:55+00:00","mainEntityOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/"},"wordCount":2318,"commentCount":0,"publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/05\/laravel-scout.jpg","inLanguage":"nl-NL","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/","url":"https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/","name":"Laravel Scout gebruiken om full-text zoeken mogelijk te maken - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinsta.com\/nl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/#primaryimage"},"image":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/#primaryimage"},"thumbnailUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/05\/laravel-scout.jpg","datePublished":"2023-05-15T13:23:34+00:00","dateModified":"2023-07-06T12:37:55+00:00","description":"Leer alles over Laravel Scout, hoe je het installeert in een Laravel project, en hoe je de bibliotheek gebruikt om full-text zoeken mogelijk te maken.","breadcrumb":{"@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/#breadcrumb"},"inLanguage":"nl-NL","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/"]}]},{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/#primaryimage","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/05\/laravel-scout.jpg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/05\/laravel-scout.jpg","width":1500,"height":750},{"@type":"BreadcrumbList","@id":"https:\/\/kinsta.com\/nl\/blog\/laravel-scout\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinsta.com\/nl\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinsta.com\/nl\/onderwerpen\/laravel\/"},{"@type":"ListItem","position":3,"name":"Laravel Scout gebruiken om full-text zoeken mogelijk te maken"}]},{"@type":"WebSite","@id":"https:\/\/kinsta.com\/nl\/#website","url":"https:\/\/kinsta.com\/nl\/","name":"Kinsta\u00ae","description":"Snelle, veilige, premium hostingoplossingen","publisher":{"@id":"https:\/\/kinsta.com\/nl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinsta.com\/nl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"nl-NL"},{"@type":"Organization","@id":"https:\/\/kinsta.com\/nl\/#organization","name":"Kinsta","url":"https:\/\/kinsta.com\/nl\/","logo":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/","url":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinsta.com\/nl\/wp-content\/uploads\/sites\/7\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinsta.com\/nl\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Nederland-476213452787823\/","https:\/\/x.com\/Kinsta_NL","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\/nl\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21","name":"Jeremy Holcombe","image":{"@type":"ImageObject","inLanguage":"nl-NL","@id":"https:\/\/kinsta.com\/nl\/#\/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\/nl\/blog\/author\/jeremyholcombe\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/52518","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/users\/199"}],"replies":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/comments?post=52518"}],"version-history":[{"count":10,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/52518\/revisions"}],"predecessor-version":[{"id":53850,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/posts\/52518\/revisions\/53850"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/52518\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/52518\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/52518\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/52518\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/52518\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/52518\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/52518\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/52518\/translations\/es"},{"href":"https:\/\/kinsta.com\/nl\/wp-json\/kinsta\/v1\/posts\/52518\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media\/52519"}],"wp:attachment":[{"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/media?parent=52518"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/tags?post=52518"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinsta.com\/nl\/wp-json\/wp\/v2\/topic?post=52518"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}