{"id":61710,"date":"2023-05-15T14:21:56","date_gmt":"2023-05-15T13:21:56","guid":{"rendered":"https:\/\/kinqsta.com\/de\/?p=61710&#038;preview=true&#038;preview_id=61710"},"modified":"2023-11-16T09:05:43","modified_gmt":"2023-11-16T08:05:43","slug":"laravel-scout","status":"publish","type":"post","link":"https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/","title":{"rendered":"Mit Laravel Scout die Volltextsuche aktivieren"},"content":{"rendered":"<p>Das <a href=\"https:\/\/kinqsta.com\/de\/blog\/was-ist-laravel\/\">Laravel-Framework<\/a> hat sich zu einer wichtigen Ressource f\u00fcr Entwickler entwickelt, die Webservices erstellen.<\/p>\n<p>Als Open-Source-Tool bietet Laravel eine Vielzahl von Out-of-the-Box-Funktionen, mit denen Entwickler robuste und funktionale Anwendungen erstellen k\u00f6nnen.<\/p>\n<p>Dazu geh\u00f6rt auch <a href=\"https:\/\/laravel.com\/docs\/9.x\/scout\" target=\"_blank\" rel=\"noopener noreferrer\">Laravel Scout<\/a>, eine Bibliothek zur Verwaltung der Suchindizes f\u00fcr deine Anwendung. Dank ihrer Flexibilit\u00e4t k\u00f6nnen Entwickler die Konfigurationen fein abstimmen und zwischen Algolia-, Meilisearch-, MySQL- oder <a href=\"https:\/\/sevalla.com\/database-hosting\/\">Postgres-Treibern<\/a> f\u00fcr die Speicherung der Indizes w\u00e4hlen.<\/p>\n<p>In diesem Artikel werden wir dieses Tool genauer unter die Lupe nehmen und dir zeigen, wie du eine Laravel-Anwendung mit Hilfe des Treibers um eine Volltextsuche erweitern kannst. Du wirst eine Demo-Laravel-Anwendung modellieren, um den Namen von Mockup-Z\u00fcgen zu speichern und dann Laravel Scout verwenden, um der Anwendung eine Suche hinzuzuf\u00fcgen.<\/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>Voraussetzungen<\/h2>\n<p>Um mitzumachen, solltest du Folgendes mitbringen:<\/p>\n<ul>\n<li>Der PHP-Compiler sollte auf deinem Computer installiert sein. Dieses Tutorial verwendet die PHP-Version 8.1.<\/li>\n<li>Die Docker-Engine oder Docker Desktop auf deinem Computer installiert haben<\/li>\n<li>Ein <a href=\"http:\/\/algolia.com\" target=\"_blank\" rel=\"noopener noreferrer\">Algolia-Cloud-Konto<\/a>, das du kostenlos erstellen kannst<\/li>\n<\/ul>\n\n<h2>So installierst du Scout in einem Laravel-Projekt<\/h2>\n<p>Um Scout zu nutzen, musst du zun\u00e4chst eine Laravel-Anwendung erstellen, in die du die Suchfunktion einbauen willst. Das Laravel-Scout Bash-Skript enth\u00e4lt die Befehle, um eine Laravel-Anwendung in einem Docker-Container zu erstellen. Die Verwendung von Docker bedeutet, dass du keine zus\u00e4tzliche unterst\u00fctzende Software wie eine MySQL-Datenbank installieren musst.<\/p>\n<p>Das Laravel-Scout-Skript verwendet die Skriptsprache Bash, du musst es also in einer Linux-Umgebung ausf\u00fchren. Wenn du mit Windows arbeitest, musst du das Windows Subsystem f\u00fcr Linux (WSL) <a href=\"https:\/\/learn.microsoft.com\/en-us\/windows\/wsl\/install\" target=\"_blank\" rel=\"noopener noreferrer\">konfigurieren<\/a>.<\/p>\n<p>Wenn du WSL verwendest, f\u00fchre den folgenden Befehl in deinem Terminal aus, um deine bevorzugte Linux-Distribution einzustellen.<\/p>\n<pre><code class=\"language-bash\">wsl -s ubuntu<\/code><\/pre>\n<p>Als N\u00e4chstes navigierst du zu dem Ort auf deinem Computer, an dem du das Projekt ablegen m\u00f6chtest. Das Laravel-Scout-Skript wird hier ein Projektverzeichnis erstellen. Im folgenden Beispiel w\u00fcrde das Laravel-Scout-Skript ein Verzeichnis innerhalb des <strong>Desktop-Verzeichnisses<\/strong> erstellen.<\/p>\n<pre><code class=\"language-bash\">cd \/desktop<\/code><\/pre>\n<p>F\u00fchre den unten stehenden Befehl aus, um das Laravel-Scout-Skript auszuf\u00fchren. Es wird eine Docker-Anwendung mit dem notwendigen Boilerplate-Code erstellen.<\/p>\n<pre><code class=\"language-bash\">curl -s https:\/\/laravel.build\/laravel-scout-app | bash<\/code><\/pre>\n<p>Nach der Ausf\u00fchrung wechselst du mit <code>cd laravel-scout-app<\/code> in dein Verzeichnis. F\u00fchre dann den Befehl <code>sail-up<\/code> im Projektordner aus, um die Docker-Container f\u00fcr deine Anwendung zu starten.<\/p>\n<p><strong>Hinweis:<\/strong> Bei vielen Linux-Distributionen musst du den unten stehenden Befehl m\u00f6glicherweise mit dem Befehl <code>sudo<\/code> ausf\u00fchren, um erweiterte Rechte zu erhalten.<\/p>\n<pre><code class=\"language-bash\">.\/vendor\/bin\/sail up<\/code><\/pre>\n<p>Es kann sein, dass du eine Fehlermeldung erh\u00e4ltst:<\/p>\n<figure style=\"width: 307px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/03\/1-port-allocated-error-1.png\" alt=\"Fehler, dass der Port zugewiesen ist\" width=\"307\" height=\"19\"><figcaption class=\"wp-caption-text\">Fehler, dass der Port zugewiesen ist.<\/figcaption><\/figure>\n<p>Um dieses Problem zu beheben, verwende die Variable <code>APP_PORT<\/code>, um einen Port im Befehl <code>sail up<\/code> anzugeben:<\/p>\n<pre><code class=\"language-bash\">APP_PORT=3001 .\/vendor\/bin\/sail up<\/code><\/pre>\n<p>Als N\u00e4chstes f\u00fchrst du den folgenden Befehl aus, um die Anwendung \u00fcber Artisan auf dem PHP-Server auszuf\u00fchren.<\/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:\/\/kinqsta.com\/wp-content\/uploads\/2023\/03\/laravel-with-artisan.png\" alt=\"Servieren der Laravel-Anwendung mit Artisan\" width=\"1600\" height=\"387\"><figcaption class=\"wp-caption-text\">Servieren der Laravel-Anwendung mit Artisan<\/figcaption><\/figure>\n<p>Navigiere mit deinem Webbrowser zu der laufenden Anwendung unter http:\/\/127.0.0.1:8000. Die Anwendung zeigt die Laravel-Begr\u00fc\u00dfungsseite \u00fcber die Standardroute an.<\/p>\n<figure style=\"width: 1328px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/03\/laravel-application-welcome-page.png\" alt=\"Willkommensseite der Laravel-Anwendung\" width=\"1328\" height=\"900\"><figcaption class=\"wp-caption-text\">Willkommensseite der Laravel-Anwendung<\/figcaption><\/figure>\n<h2>So f\u00fcgst du Laravel Scout zu deiner Anwendung hinzu<\/h2>\n<p>Gib in deinem Terminal den Befehl ein, um den <a href=\"https:\/\/getcomposer.org\/\" target=\"_blank\" rel=\"noopener noreferrer\">Composer<\/a> PHP-Paketmanager zu aktivieren und Laravel Scout zu deinem Projekt hinzuzuf\u00fcgen.<\/p>\n<pre><code class=\"language-bash\">composer require laravel\/scout<\/code><\/pre>\n<p>Als N\u00e4chstes ver\u00f6ffentlichst du die Scout-Konfigurationsdatei mit dem Befehl vendor:publish. Mit diesem Befehl wird die Konfigurationsdatei <code>scout.php<\/code> im <strong>config-Verzeichnis<\/strong> deiner Anwendung ver\u00f6ffentlicht.<\/p>\n<pre><code class=\"language-bash\"> php artisan vendor:publish --provider=\"Laravel\\Scout\\ScoutServiceProvider\"<\/code><\/pre>\n<p>\u00c4ndere nun die Boilerplate-Datei <strong>.env<\/strong> so, dass sie einen booleschen Wert <code>SCOUT_QUEUE<\/code> enth\u00e4lt.<\/p>\n<p>Der Wert <code>SCOUT_QUEUE<\/code> erm\u00f6glicht es Scout, Operationen in eine Warteschlange zu stellen und damit die Reaktionszeiten zu verbessern. Ohne diesen Wert werden Scout-Treiber wie <a href=\"https:\/\/www.meilisearch.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Meilisearch<\/a> neue Datens\u00e4tze nicht sofort anzeigen.<\/p>\n<pre><code class=\"language-bash\">SCOUT_QUEUE=true<\/code><\/pre>\n<p>\u00c4ndere au\u00dferdem die Variable <code>DB_HOST<\/code> in der <strong>.env-Datei<\/strong> so, dass sie auf deinen Localhost zeigt, um die <a href=\"https:\/\/kinqsta.com\/de\/blog\/mysql-vs-sqlite\/\">MySQL-Datenbank<\/a> in den Docker-Containern zu verwenden.<\/p>\n<pre><code class=\"language-bash\">DB_HOST=127.0.0.1<\/code><\/pre>\n<h2>So markierst du ein Modell und konfigurierst den Index<\/h2>\n<p>Scout aktiviert standardm\u00e4\u00dfig keine durchsuchbaren Datenmodelle. Du musst ein Modell explizit als durchsuchbar markieren, indem du seine <code>Laravel\\Scout\\Searchable<\/code>\u00a0Eigenschaft verwendest.<\/p>\n<p>Du beginnst mit der Erstellung eines Datenmodells f\u00fcr eine <code>Train<\/code> Demo-Anwendung und markierst es als durchsuchbar.<\/p>\n<h3>So erstellst du ein Modell<\/h3>\n<p>F\u00fcr die Anwendung <code>Train<\/code> m\u00f6chtest du die Platzhalternamen der einzelnen verf\u00fcgbaren Z\u00fcge speichern.<\/p>\n<p>F\u00fchre den folgenden Artisan-Befehl aus, um die Migration zu erstellen und nenne sie <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:\/\/kinqsta.com\/wp-content\/uploads\/2023\/03\/migration-created.png\" alt=\"Erstellen einer Migration namens create_trains_table\" width=\"1600\" height=\"145\"><figcaption class=\"wp-caption-text\">Erstellen einer Migration namens create_trains_table<\/figcaption><\/figure>\n<p>Die Migration wird in einer Datei erstellt, deren Name sich aus dem angegebenen Namen und dem aktuellen Zeitstempel zusammensetzt.<\/p>\n<p>\u00d6ffne die Migrationsdatei, die sich im Verzeichnis <strong>database\/migrations\/<\/strong> befindet.<\/p>\n<p>Um eine Titelspalte hinzuzuf\u00fcgen, f\u00fcge den folgenden Code nach der Spalte <code>id()<\/code> in Zeile 17 ein. Der Code f\u00fcgt eine Titelspalte hinzu.<\/p>\n<pre><code class=\"language-php\">$table-&gt;string('title');<\/code><\/pre>\n<p>Um die Migration anzuwenden, f\u00fchre den folgenden Befehl aus.<\/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:\/\/kinqsta.com\/wp-content\/uploads\/2023\/03\/artisan-migration.png\" alt=\"Anwenden der Artisan-Migration\" width=\"1600\" height=\"335\"><figcaption class=\"wp-caption-text\">Anwenden der Artisan-Migration<\/figcaption><\/figure>\n<p>Nachdem du die Datenbankmigrationen ausgef\u00fchrt hast, erstelle eine Datei namens <strong>Train.php<\/strong> im Verzeichnis <strong>app\/Models\/<\/strong>.<\/p>\n<h3>So f\u00fcgst du die Eigenschaft Laravel\\Scout\\Searchable hinzu<\/h3>\n<p>Markiere das Modell <code>Train<\/code> f\u00fcr die Suche, indem du die Eigenschaft <code>Laravel\\Scout\\Searchable<\/code>\u00a0zum Modell hinzuf\u00fcgst, wie unten gezeigt.<\/p>\n<pre><code class=\"language-php\">&lt;?php\nnamespace App\\Models;\nuse Illuminate\\Database\\Eloquent\\Model;\nuse Laravel\\Scout\\Searchable;\n\nclass Train extends Model\n{\n    use Searchable;\n    public $fillable = ['title'];<\/code><\/pre>\n<p>Au\u00dferdem musst du die Suchindizes konfigurieren, indem du die Methode <code>searchableAs<\/code>\u00a0\u00fcberschreibst. Das Standardverhalten von Scout w\u00fcrde das Modell so ver\u00e4ndern, dass es mit dem Namen der Modelltabelle \u00fcbereinstimmt.<\/p>\n<p>F\u00fcge also den folgenden Code in die Datei <strong>Train.php<\/strong> unterhalb des Codes aus dem vorherigen Block ein.<\/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>Wie man Algolia mit Scout verwendet<\/h2>\n<p>F\u00fcr die erste Volltextsuche mit Laravel Scout wirst du den <a href=\"https:\/\/www.algolia.com\/\" target=\"_blank\" rel=\"noopener noreferrer\">Algolia-Treiber<\/a> verwenden. Algolia ist eine Software-as-a-Service (SaaS)-Plattform f\u00fcr die Suche in gro\u00dfen Datenmengen. Sie bietet ein Web-Dashboard, mit dem Entwickler ihre Suchindizes verwalten k\u00f6nnen, und eine robuste API, auf die du \u00fcber ein Software Development Kit (SDK) in deiner bevorzugten Programmiersprache zugreifen kannst.<\/p>\n<p>Innerhalb der Laravel-Anwendung wirst du das <a href=\"https:\/\/github.com\/algolia\/algoliasearch-client-php\" target=\"_blank\" rel=\"noopener noreferrer\">Algolia-Client-Paket<\/a> f\u00fcr PHP verwenden.<\/p>\n<h3>So richtest du Algolia ein<\/h3>\n<p>Zuerst musst du das Algolia <a href=\"https:\/\/github.com\/algolia\/algoliasearch-client-php\" target=\"_blank\" rel=\"noopener noreferrer\">PHP-Suchclient-Paket<\/a> f\u00fcr deine Anwendung installieren.<\/p>\n<p>F\u00fchre dazu den folgenden Befehl aus.<\/p>\n<pre><code class=\"language-bash\">composer require algolia\/algoliasearch-client-php<\/code><\/pre>\n<p>Als N\u00e4chstes musst du deine Anwendungs-ID und den geheimen API-Schl\u00fcssel von Algolia in der <strong>.env-Datei<\/strong> festlegen.<\/p>\n<p>Navigiere mit deinem Webbrowser zu deinem Algolia Dashboard, um die Anwendungs-ID und den geheimen API-Schl\u00fcssel zu erhalten.<\/p>\n<p>Klicke unten in der linken Seitenleiste auf &#8222;<strong>Einstellungen<\/strong>&#8222;, um zur Seite &#8222;<strong>Einstellungen<\/strong>&#8220; zu gelangen.<\/p>\n<p>Klicke auf der Einstellungsseite im Bereich <strong>Team und Zugang<\/strong> auf <strong>API-Schl\u00fcssel<\/strong>, um die Schl\u00fcssel f\u00fcr dein Algolia-Konto einzusehen.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/03\/api-keys-algolia-cloud.png\" alt=\"Navigieren zur Seite mit den API-Schl\u00fcsseln auf Algolia Cloud\" width=\"1600\" height=\"1020\"><figcaption class=\"wp-caption-text\">API-Schl\u00fcssel Seite auf Algolia Cloud<\/figcaption><\/figure>\n<p>Notiere dir auf der Seite mit den API-Schl\u00fcsseln die Werte f\u00fcr die <strong>Anwendungs-ID<\/strong> und den <strong>Admin-API-Schl\u00fcssel<\/strong>. Du wirst diese Anmeldedaten verwenden, um die Verbindung zwischen der Laravel-Anwendung und Algolia zu authentifizieren.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/03\/application-id-admin-keys.png\" alt=\"Anzeigen der Anwendungs-ID und Admin-API-Schl\u00fcssel auf der Seite Algolia API-Schl\u00fcssel\" width=\"1600\" height=\"868\"><figcaption class=\"wp-caption-text\">Anwendungs-ID und Admin-API-Schl\u00fcssel<\/figcaption><\/figure>\n<p>F\u00fcge den folgenden Code mit deinem Code-Editor zu deiner .env-Datei hinzu und ersetze die Platzhalter durch die entsprechenden Algolia-API-Geheimnisse.<\/p>\n<pre><code class=\"language-bash\">ALGOLIA_APP_ID=APPLICATION_ID\nALGOLIA_SECRET=ADMIN_API_KEY<\/code><\/pre>\n<p>Ersetze au\u00dferdem die Variable <code>SCOUT_DRIVER<\/code> durch den unten stehenden Code, um den Wert von <code>meilisearch<\/code> in <code>algolia<\/code> zu \u00e4ndern. Wenn du diesen Wert \u00e4nderst, weist du Scout an, den Algolia-Treiber zu verwenden.<\/p>\n<pre><code class=\"language-bash\">SCOUT_DRIVER=algolia<\/code><\/pre>\n<h2>So erstellst du die Anwendungscontroller<\/h2>\n<p>Erstelle im Verzeichnis <strong>app\/Http\/Controllers\/<\/strong> eine Datei <strong>TrainSearchController.php<\/strong>, um einen Controller f\u00fcr die Anwendung zu speichern. Der Controller listet Daten auf und f\u00fcgt sie dem Modell <code>Train<\/code> hinzu.<\/p>\n<p>F\u00fcge den folgenden Codeblock in die Datei <strong>TrainSearchController.php<\/strong> ein, um den Controller zu erstellen.<\/p>\n<pre><code class=\"language-php\">&lt;?php\nnamespace App\\Http\\Controllers;\nuse Illuminate\\Http\\Request;\nuse App\\Http\\Requests;\nuse App\\Models\\Train;\n\nclass TrainSearchController extends Controller\n{\n    \/**\n     * Compile the content for a trains list view.\n     *\n     * @return \\Illuminate\\Contracts\\View\\Factory|\\Illuminate\\Contracts\\View\\View\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     * Create a new train entry.\n     *\n     * @return \\Illuminate\\Http\\RedirectResponse\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>So erstellst du die Anwendungsrouten<\/h2>\n<p>In diesem Schritt erstellst du die Routen f\u00fcr das Auflisten und Hinzuf\u00fcgen neuer Z\u00fcge in der Datenbank.<\/p>\n<p>\u00d6ffne deine Datei <strong>routes\/web.php<\/strong> und ersetze den vorhandenen Code durch den folgenden Block.<\/p>\n<pre><code class=\"language-php\">&lt;?php\n\nuse Illuminate\\Support\\Facades\\Route;\nuse App\\Http\\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>Der obige Code definiert zwei Routen in der Anwendung. Die Anfrage <code>GET<\/code> f\u00fcr die Route <code>\/trains-lists<\/code> listet alle gespeicherten Train-Daten auf. Die Anfrage <code>POST<\/code> f\u00fcr die Route <code>\/create-item<\/code> erstellt neue Train-Daten.<\/p>\n<h2>So erstellst du die Anwendungsansichten<\/h2>\n<p>Erstelle eine Datei im Verzeichnis <strong>resources\/views\/<\/strong> und nenne sie <strong>Train-search.blade.php<\/strong>. In dieser Datei wird die Benutzeroberfl\u00e4che f\u00fcr die Suchfunktion angezeigt.<\/p>\n<p>F\u00fcge den Inhalt des folgenden Codeblocks in die Datei <strong>Train-search.blade.php<\/strong> ein, um eine einzelne Seite f\u00fcr die Suchfunktion zu erstellen.<\/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>Der obige HTML-Code enth\u00e4lt ein Formularelement mit einem Eingabefeld und einer Schaltfl\u00e4che, um den Titel eines Trains einzugeben, bevor du ihn in der Datenbank speicherst. Der Code enth\u00e4lt au\u00dferdem eine HTML-Tabelle, in der die <strong>ID<\/strong>, der <strong>Titel<\/strong>, das <strong>created_at<\/strong> und das <strong>updated_at<\/strong> eines Train-Eintrags in der Datenbank angezeigt werden.<\/p>\n<h2>So benutzt du die Algolia-Suche<\/h2>\n<p>Um die Seite aufzurufen, navigiere mit deinem Webbrowser zu <a href=\"http:\/\/127.0.0.1:8000\/trains-lists\" target=\"_blank\" rel=\"noopener noreferrer\">http:\/\/127.0.0.1:8000\/trains-lists<\/a>.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/03\/train-model-data.png\" alt=\"Anzeigen der Train Model Daten auf der Seite \"trains-lists\".\" width=\"1600\" height=\"527\"><figcaption class=\"wp-caption-text\">Modell-Train-Daten<\/figcaption><\/figure>\n<p>Die Datenbank ist zurzeit leer, also musst du einen Titel f\u00fcr einen Demo-Train in das Eingabefeld eingeben und auf <strong>Neuen Train erstellen<\/strong> klicken, um ihn zu speichern.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/03\/new-train-entry.png\" alt=\"Einf\u00fcgen eines neuen Train-Eintrags\" width=\"1600\" height=\"531\"><figcaption class=\"wp-caption-text\">Einf\u00fcgen eines neuen Train-Eintrags<\/figcaption><\/figure>\n<p>Um die Suchfunktion zu nutzen, gibst du ein Stichwort aus einem der gespeicherten Train-Titel in das Eingabefeld <strong>Titel f\u00fcr Suche eingeben<\/strong> ein und klickst auf <strong>Suchen<\/strong>.<\/p>\n<p>Wie in der Abbildung unten zu sehen ist, werden nur Sucheintr\u00e4ge angezeigt, die das Stichwort in ihrem Titel enthalten.<\/p>\n<figure style=\"width: 1600px\" class=\"wp-caption alignnone\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kinqsta.com\/wp-content\/uploads\/2023\/03\/search-feature-train-entry.png\" alt=\"Verwenden der Suchfunktion, um einen Train-Eintrag zu finden\" width=\"1600\" height=\"533\"><figcaption class=\"wp-caption-text\">Verwenden der Suchfunktion, um einen Train-Eintrag zu finden<\/figcaption><\/figure>\n<h2>Meilisearch mit Laravel Scout<\/h2>\n<p>Meilisearch ist eine Open-Source-Suchmaschine, die sich auf Geschwindigkeit, Leistung und ein verbessertes Entwicklererlebnis konzentriert. Sie hat einige Funktionen mit Algolia gemeinsam und verwendet die gleichen Algorithmen, Datenstrukturen und Forschungsergebnisse &#8211; allerdings in einer anderen <a href=\"https:\/\/kinqsta.com\/de\/blog\/beste-programmiersprache-lernen-sollte\/\">Programmiersprache<\/a>.<\/p>\n<p>Entwicklerinnen und Entwickler k\u00f6nnen eine Meilisearch-Instanz in ihrer On-Premises- oder Cloud-Infrastruktur erstellen und selbst hosten. Meilisearch hat auch ein Beta-Cloud-Angebot \u00e4hnlich wie Algolia f\u00fcr Entwickler, die das Produkt nutzen wollen, ohne die Infrastruktur zu verwalten.<\/p>\n<p>In diesem Tutorial hast du bereits eine lokale Instanz von Meilisearch in deinen <a href=\"https:\/\/kinqsta.com\/de\/blog\/was-ist-docker\/\">Docker-Containern<\/a> laufen. Du wirst nun die Laravel Scout-Funktionalit\u00e4t erweitern, um die Meilisearch-Instanz zu nutzen.<\/p>\n<p>Um Meilisearch zu deiner Laravel-Anwendung hinzuzuf\u00fcgen, f\u00fchre den folgenden Befehl in deinem Projektterminal aus.<\/p>\n<pre><code class=\"language-bash\">composer require meilisearch\/meilisearch-php<\/code><\/pre>\n<p>Als N\u00e4chstes musst du die Meilisearch-Variablen in der <strong>.env-Datei<\/strong> \u00e4ndern, um sie zu konfigurieren.<\/p>\n<p>Ersetze die Variablen <code>SCOUT_DRIVER<\/code>, <code>MEILISEARCH_HOST<\/code> und <code>MEILISEARCH_KEY<\/code> in der <strong>.env-Datei<\/strong> durch die unten stehenden Variablen.<\/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>Der Schl\u00fcssel <code>SCOUT_DRIVER<\/code> gibt den Treiber an, den Scout verwenden soll, w\u00e4hrend <code>MEILISEARCH_HOST<\/code> f\u00fcr die Dom\u00e4ne steht, in der deine Meilisearch-Instanz l\u00e4uft. W\u00e4hrend der Entwicklung ist es nicht erforderlich, aber in der Produktion wird empfohlen, die <code>MEILISEARCH_KEY<\/code> hinzuzuf\u00fcgen.<\/p>\n<p><strong>Hinweis:<\/strong> Kommentiere die Algolia ID und Secret aus, wenn du Meilisearch als deinen bevorzugten Treiber verwendest.<\/p>\n<p>Nachdem du die <strong>.env-Konfigurationen<\/strong> abgeschlossen hast, solltest du deine bereits vorhandenen Datens\u00e4tze mit dem unten stehenden Artisan-Befehl indizieren.<\/p>\n<pre><code class=\"language-bash\">php artisan scout:import \"App\\Models\\Train\"<\/code><\/pre>\n<h2>Laravel Scout mit Datenbank-Engine<\/h2>\n<p>Die <a href=\"https:\/\/laravel.com\/docs\/9.x\/scout#database-and-collection-engines\" target=\"_blank\" rel=\"noopener noreferrer\">Datenbank-Engine<\/a> von Scout eignet sich am besten f\u00fcr Anwendungen, die kleinere Datenbanken verwenden oder weniger intensive Workloads verwalten. Derzeit unterst\u00fctzt die Datenbank-Engine <a href=\"https:\/\/kinqsta.com\/de\/blog\/postgresql-vs-mysql\/\">PostgreSQL und MySQL<\/a>.<\/p>\n<p>Diese Engine verwendet &#8222;Where-like&#8220;-Klauseln und Volltextindizes f\u00fcr deine bestehende Datenbank, um die relevantesten Suchergebnisse zu finden. Wenn du die Datenbank-Engine verwendest, musst du deine Datens\u00e4tze nicht indizieren.<\/p>\n<p>Um die Datenbank-Engine zu nutzen, musst du deine <code>SCOUT_DRIVER<\/code> <strong>.env<\/strong> Variable auf die Datenbank setzen.<\/p>\n<p>\u00d6ffne die <strong>.env-Datei<\/strong> innerhalb der Laravel-Anwendung und \u00e4ndere den Wert der Variable <code>SCOUT_DRIVER<\/code>.<\/p>\n<pre><code class=\"language-bash\">SCOUT_DRIVER = database<\/code><\/pre>\n<p>Nachdem du deinen Treiber auf die Datenbank ge\u00e4ndert hast, schaltet Scout auf die Verwendung der Datenbank-Engine f\u00fcr die Volltextsuche um.<\/p>\n<h2>Collection Engine mit Laravel Scout<\/h2>\n<p>Zus\u00e4tzlich zur Datenbank-Engine bietet Scout auch eine <a href=\"https:\/\/laravel.com\/docs\/9.x\/scout#collection-engine\" target=\"_blank\" rel=\"noopener noreferrer\">Collection-Engine<\/a>. Diese Engine verwendet &#8222;Where&#8220;-Klauseln und Sammlungsfilter, um die relevantesten Suchergebnisse zu ermitteln.<\/p>\n<p>Im Gegensatz zur Datenbank-Engine unterst\u00fctzt die Sammel-Engine alle relationalen Datenbanken, die auch Laravel unterst\u00fctzt.<\/p>\n<p>Du kannst die Collection Engine nutzen, indem du die Umgebungsvariable <code>SCOUT_DRIVER<\/code> auf <code>collection<\/code> setzt oder den Collection Driver manuell in der Scout-Konfigurationsdatei angibst.<\/p>\n<pre><code class=\"language-bash\">SCOUT_DRIVER = collection<\/code><\/pre>\n<h2>Explorer mit Elasticsearch<\/h2>\n<p>Mit der St\u00e4rke von Elasticsearch-Abfragen ist der Explorer ein moderner Elasticsearch-Treiber f\u00fcr Laravel Scout. Er bietet einen kompatiblen Scout-Treiber und Vorteile wie das Speichern, Suchen und Analysieren riesiger Datenmengen in Echtzeit. Elasticsearch mit Laravel liefert Ergebnisse in Millisekunden.<\/p>\n<p>Um den Elasticsearch Explorer-Treiber in deiner Laravel-Anwendung zu verwenden, musst du die Boilerplate-Datei <strong>docker-compose.yml<\/strong> konfigurieren, die das Laravel-Scout-Skript erstellt hat. Du f\u00fcgst die zus\u00e4tzlichen Konfigurationen f\u00fcr Elasticsearch hinzu und startest die Container neu.<\/p>\n<p>\u00d6ffne deine Datei <strong>docker-compose.yml<\/strong> und ersetze ihren Inhalt durch den folgenden.<\/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>Als N\u00e4chstes f\u00fchrst du den folgenden Befehl aus, um das neue Elasticsearch-Image zu laden, das du der Datei <strong>docker-compose.yml<\/strong> hinzugef\u00fcgt hast.<\/p>\n<pre><code class=\"language-bash\">docker-compose up<\/code><\/pre>\n<p>F\u00fchre dann den Composer-Befehl unten aus, um Explorer in das Projekt zu installieren.<\/p>\n<pre><code class=\"language-bash\">composer require jeroen-g\/explorer<\/code><\/pre>\n<p>Du musst auch eine Konfigurationsdatei f\u00fcr den Explorer-Treiber erstellen.<\/p>\n<p>F\u00fchre den folgenden Artisan-Befehl aus, um eine <strong>explorer.config-Datei<\/strong> zum Speichern der Konfigurationen zu erstellen.<\/p>\n<pre><code class=\"language-bash\">php artisan vendor:publish --tag=explorer.config<\/code><\/pre>\n<p>Die oben erstellte Konfigurationsdatei wird im Verzeichnis <strong>\/config<\/strong> verf\u00fcgbar sein.<\/p>\n<p>In deiner Datei <strong>config\/explorer.php<\/strong> kannst du dein Modell mit dem Schl\u00fcssel <code>indexes<\/code> referenzieren.<\/p>\n<pre><code class=\"language-php\">'indexes' =&gt; [\n        AppModelsTrain::class\n],<\/code><\/pre>\n<p>\u00c4ndere den Wert der Variable <code>SCOUT_DRIVER<\/code> in der <strong>.env-Datei<\/strong> in <code>elastic<\/code>, um Scout f\u00fcr die Verwendung des Explorer-Treibers zu konfigurieren.<\/p>\n<pre><code class=\"language-bash\">SCOUT_DRIVER = elastic<\/code><\/pre>\n<p>An dieser Stelle verwendest du den Explorer innerhalb des <code>Train<\/code> Modells, indem du die Explorer-Schnittstelle implementierst und die Methode <code>mappableAs()<\/code> \u00fcberschreibst.<\/p>\n<p>\u00d6ffne die Datei <strong>Train.php<\/strong> im Verzeichnis <strong>App\\Models<\/strong> und ersetze den vorhandenen Code durch den unten stehenden Code.<\/p>\n<pre><code class=\"language-php\">&lt;?php\nnamespace App\\Models;\n \nuse Illuminate\\Database\\Eloquent\\Factories\\HasFactory;\nuse Illuminate\\Database\\Eloquent\\Model;\nuse JeroenG\\Explorer\\Application\\Explored;\nuse Laravel\\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>Mit dem Code, den du oben hinzugef\u00fcgt hast, kannst du jetzt den Explorer verwenden, um Text im Modell <code>Train<\/code> zu suchen.<\/p>\n\n<h2>Zusammenfassung<\/h2>\n<p>F\u00fcr PHP-Entwickler ist es mit Laravel und Add-ons wie Scout ein Kinderspiel, eine schnelle und robuste Volltextsuche zu integrieren. Mit der Database Engine, der Collection Engine und den M\u00f6glichkeiten von Meilisearch und Elasticsearch kannst du mit der Datenbank deiner App interagieren und erweiterte Suchmechanismen in wenigen Millisekunden implementieren.<\/p>\n<p>Die nahtlose Verwaltung und Aktualisierung deiner Datenbank bedeutet, dass deine Nutzer ein optimales Erlebnis haben, w\u00e4hrend dein Code sauber und effizient bleibt.<\/p>\n<p>Mit unseren L\u00f6sungen f\u00fcr das <a href=\"https:\/\/kinqsta.com\/de\/changelog\/anwendungs-hosting-datenbank-hosting\/\">Anwendungs- und Datenbank-Hosting<\/a> ist Kinsta dein One-Stop-Shop f\u00fcr alle deine Anforderungen an eine moderne Laravel-Entwicklung. <a href=\"https:\/\/sevalla.com\/application-hosting\/\">Die ersten 20 Dollar gehen auf uns<\/a>.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Das Laravel-Framework hat sich zu einer wichtigen Ressource f\u00fcr Entwickler entwickelt, die Webservices erstellen. Als Open-Source-Tool bietet Laravel eine Vielzahl von Out-of-the-Box-Funktionen, mit denen Entwickler robuste &#8230;<\/p>\n","protected":false},"author":199,"featured_media":62029,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_kinsta_gated_content":false,"_kinsta_gated_content_redirect":"","footnotes":""},"tags":[],"topic":[958],"class_list":["post-61710","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>Mit Laravel Scout die Volltextsuche aktivieren - Kinsta\u00ae<\/title>\n<meta name=\"description\" content=\"Erfahre alles \u00fcber Laravel Scout, wie du es in einem Laravel-Projekt installierst und wie du die Bibliothek f\u00fcr die Volltextsuche nutzt.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/\" \/>\n<meta property=\"og:locale\" content=\"de_DE\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Mit Laravel Scout die Volltextsuche aktivieren\" \/>\n<meta property=\"og:description\" content=\"Erfahre alles \u00fcber Laravel Scout, wie du es in einem Laravel-Projekt installierst und wie du die Bibliothek f\u00fcr die Volltextsuche nutzt.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/\" \/>\n<meta property=\"og:site_name\" content=\"Kinsta\u00ae\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\" \/>\n<meta property=\"article:published_time\" content=\"2023-05-15T13:21:56+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2023-11-16T08:05:43+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/05\/laravel-scout.jpeg\" \/>\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=\"Erfahre alles \u00fcber Laravel Scout, wie du es in einem Laravel-Projekt installierst und wie du die Bibliothek f\u00fcr die Volltextsuche nutzt.\" \/>\n<meta name=\"twitter:image\" content=\"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/05\/laravel-scout.jpeg\" \/>\n<meta name=\"twitter:creator\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:site\" content=\"@Kinsta_DE\" \/>\n<meta name=\"twitter:label1\" content=\"Verfasst von\" \/>\n\t<meta name=\"twitter:data1\" content=\"Jeremy Holcombe\" \/>\n\t<meta name=\"twitter:label2\" content=\"Gesch\u00e4tzte Lesezeit\" \/>\n\t<meta name=\"twitter:data2\" content=\"15\u00a0Minuten\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/\"},\"author\":{\"name\":\"Jeremy Holcombe\",\"@id\":\"https:\/\/kinqsta.com\/de\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\"},\"headline\":\"Mit Laravel Scout die Volltextsuche aktivieren\",\"datePublished\":\"2023-05-15T13:21:56+00:00\",\"dateModified\":\"2023-11-16T08:05:43+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/\"},\"wordCount\":2309,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/de\/#organization\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/05\/laravel-scout.jpeg\",\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/\",\"url\":\"https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/\",\"name\":\"Mit Laravel Scout die Volltextsuche aktivieren - Kinsta\u00ae\",\"isPartOf\":{\"@id\":\"https:\/\/kinqsta.com\/de\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/#primaryimage\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/#primaryimage\"},\"thumbnailUrl\":\"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/05\/laravel-scout.jpeg\",\"datePublished\":\"2023-05-15T13:21:56+00:00\",\"dateModified\":\"2023-11-16T08:05:43+00:00\",\"description\":\"Erfahre alles \u00fcber Laravel Scout, wie du es in einem Laravel-Projekt installierst und wie du die Bibliothek f\u00fcr die Volltextsuche nutzt.\",\"breadcrumb\":{\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/#breadcrumb\"},\"inLanguage\":\"de\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/#primaryimage\",\"url\":\"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/05\/laravel-scout.jpeg\",\"contentUrl\":\"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/05\/laravel-scout.jpeg\",\"width\":1500,\"height\":750,\"caption\":\"Mit Laravel Scout die Volltextsuche aktivieren\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/kinqsta.com\/de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Laravel\",\"item\":\"https:\/\/kinqsta.com\/de\/thema\/laravel\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Mit Laravel Scout die Volltextsuche aktivieren\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/kinqsta.com\/de\/#website\",\"url\":\"https:\/\/kinqsta.com\/de\/\",\"name\":\"Kinsta\u00ae\",\"description\":\"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen\",\"publisher\":{\"@id\":\"https:\/\/kinqsta.com\/de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/kinqsta.com\/de\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"de\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/kinqsta.com\/de\/#organization\",\"name\":\"Kinsta\",\"url\":\"https:\/\/kinqsta.com\/de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinqsta.com\/de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"contentUrl\":\"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg\",\"width\":500,\"height\":500,\"caption\":\"Kinsta\"},\"image\":{\"@id\":\"https:\/\/kinqsta.com\/de\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/\",\"https:\/\/x.com\/Kinsta_DE\",\"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:\/\/kinqsta.com\/de\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21\",\"name\":\"Jeremy Holcombe\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"de\",\"@id\":\"https:\/\/kinqsta.com\/de\/#\/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:\/\/kinqsta.com\/de\/blog\/author\/jeremyholcombe\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Mit Laravel Scout die Volltextsuche aktivieren - Kinsta\u00ae","description":"Erfahre alles \u00fcber Laravel Scout, wie du es in einem Laravel-Projekt installierst und wie du die Bibliothek f\u00fcr die Volltextsuche nutzt.","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:\/\/kinqsta.com\/de\/blog\/laravel-scout\/","og_locale":"de_DE","og_type":"article","og_title":"Mit Laravel Scout die Volltextsuche aktivieren","og_description":"Erfahre alles \u00fcber Laravel Scout, wie du es in einem Laravel-Projekt installierst und wie du die Bibliothek f\u00fcr die Volltextsuche nutzt.","og_url":"https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/","og_site_name":"Kinsta\u00ae","article_publisher":"https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","article_published_time":"2023-05-15T13:21:56+00:00","article_modified_time":"2023-11-16T08:05:43+00:00","og_image":[{"width":1500,"height":750,"url":"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/05\/laravel-scout.jpeg","type":"image\/jpeg"}],"author":"Jeremy Holcombe","twitter_card":"summary_large_image","twitter_description":"Erfahre alles \u00fcber Laravel Scout, wie du es in einem Laravel-Projekt installierst und wie du die Bibliothek f\u00fcr die Volltextsuche nutzt.","twitter_image":"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/05\/laravel-scout.jpeg","twitter_creator":"@Kinsta_DE","twitter_site":"@Kinsta_DE","twitter_misc":{"Verfasst von":"Jeremy Holcombe","Gesch\u00e4tzte Lesezeit":"15\u00a0Minuten"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/#article","isPartOf":{"@id":"https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/"},"author":{"name":"Jeremy Holcombe","@id":"https:\/\/kinqsta.com\/de\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21"},"headline":"Mit Laravel Scout die Volltextsuche aktivieren","datePublished":"2023-05-15T13:21:56+00:00","dateModified":"2023-11-16T08:05:43+00:00","mainEntityOfPage":{"@id":"https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/"},"wordCount":2309,"commentCount":0,"publisher":{"@id":"https:\/\/kinqsta.com\/de\/#organization"},"image":{"@id":"https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/05\/laravel-scout.jpeg","inLanguage":"de","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/","url":"https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/","name":"Mit Laravel Scout die Volltextsuche aktivieren - Kinsta\u00ae","isPartOf":{"@id":"https:\/\/kinqsta.com\/de\/#website"},"primaryImageOfPage":{"@id":"https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/#primaryimage"},"image":{"@id":"https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/#primaryimage"},"thumbnailUrl":"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/05\/laravel-scout.jpeg","datePublished":"2023-05-15T13:21:56+00:00","dateModified":"2023-11-16T08:05:43+00:00","description":"Erfahre alles \u00fcber Laravel Scout, wie du es in einem Laravel-Projekt installierst und wie du die Bibliothek f\u00fcr die Volltextsuche nutzt.","breadcrumb":{"@id":"https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/#breadcrumb"},"inLanguage":"de","potentialAction":[{"@type":"ReadAction","target":["https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/"]}]},{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/#primaryimage","url":"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/05\/laravel-scout.jpeg","contentUrl":"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/05\/laravel-scout.jpeg","width":1500,"height":750,"caption":"Mit Laravel Scout die Volltextsuche aktivieren"},{"@type":"BreadcrumbList","@id":"https:\/\/kinqsta.com\/de\/blog\/laravel-scout\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/kinqsta.com\/de\/"},{"@type":"ListItem","position":2,"name":"Laravel","item":"https:\/\/kinqsta.com\/de\/thema\/laravel\/"},{"@type":"ListItem","position":3,"name":"Mit Laravel Scout die Volltextsuche aktivieren"}]},{"@type":"WebSite","@id":"https:\/\/kinqsta.com\/de\/#website","url":"https:\/\/kinqsta.com\/de\/","name":"Kinsta\u00ae","description":"Schnelle, sichere und hochwertige Hosting-L\u00f6sungen","publisher":{"@id":"https:\/\/kinqsta.com\/de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/kinqsta.com\/de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"de"},{"@type":"Organization","@id":"https:\/\/kinqsta.com\/de\/#organization","name":"Kinsta","url":"https:\/\/kinqsta.com\/de\/","logo":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinqsta.com\/de\/#\/schema\/logo\/image\/","url":"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","contentUrl":"https:\/\/kinqsta.com\/de\/wp-content\/uploads\/sites\/5\/2023\/12\/kinsta-logo.jpeg","width":500,"height":500,"caption":"Kinsta"},"image":{"@id":"https:\/\/kinqsta.com\/de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/Kinsta-Deutschland-207459890108303\/","https:\/\/x.com\/Kinsta_DE","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:\/\/kinqsta.com\/de\/#\/schema\/person\/4eee42881d7b5a73ebb4f58dd5223b21","name":"Jeremy Holcombe","image":{"@type":"ImageObject","inLanguage":"de","@id":"https:\/\/kinqsta.com\/de\/#\/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:\/\/kinqsta.com\/de\/blog\/author\/jeremyholcombe\/"}]}},"acf":[],"_links":{"self":[{"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/posts\/61710","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/users\/199"}],"replies":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/comments?post=61710"}],"version-history":[{"count":9,"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/posts\/61710\/revisions"}],"predecessor-version":[{"id":66949,"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/posts\/61710\/revisions\/66949"}],"alternate":[{"embeddable":true,"hreflang":"en","title":"English","href":"https:\/\/kinqsta.com\/de\/wp-json\/kinsta\/v1\/posts\/61710\/translations\/en"},{"embeddable":true,"hreflang":"it","title":"Italian","href":"https:\/\/kinqsta.com\/de\/wp-json\/kinsta\/v1\/posts\/61710\/translations\/it"},{"embeddable":true,"hreflang":"pt","title":"Portuguese","href":"https:\/\/kinqsta.com\/de\/wp-json\/kinsta\/v1\/posts\/61710\/translations\/pt"},{"embeddable":true,"hreflang":"fr","title":"French","href":"https:\/\/kinqsta.com\/de\/wp-json\/kinsta\/v1\/posts\/61710\/translations\/fr"},{"embeddable":true,"hreflang":"de","title":"German","href":"https:\/\/kinqsta.com\/de\/wp-json\/kinsta\/v1\/posts\/61710\/translations\/de"},{"embeddable":true,"hreflang":"ja","title":"Japanese","href":"https:\/\/kinqsta.com\/de\/wp-json\/kinsta\/v1\/posts\/61710\/translations\/jp"},{"embeddable":true,"hreflang":"nl","title":"Dutch","href":"https:\/\/kinqsta.com\/de\/wp-json\/kinsta\/v1\/posts\/61710\/translations\/nl"},{"embeddable":true,"hreflang":"es","title":"Spanish","href":"https:\/\/kinqsta.com\/de\/wp-json\/kinsta\/v1\/posts\/61710\/translations\/es"},{"href":"https:\/\/kinqsta.com\/de\/wp-json\/kinsta\/v1\/posts\/61710\/tree"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/media\/62029"}],"wp:attachment":[{"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/media?parent=61710"}],"wp:term":[{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/tags?post=61710"},{"taxonomy":"topic","embeddable":true,"href":"https:\/\/kinqsta.com\/de\/wp-json\/wp\/v2\/topic?post=61710"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}