Repo Meetup Mai Some

Suchen mit Laravel Scout

Beim Laravel DACH Meetup im Mai ging es um die einfache, treiberbasierte Lösung für Volltextsuchen in Eloquent-Models. Mehr dazu hier und im Video.

Freitag, 13. Mai 2022

Bei unserem Meetup im Mai drehte sich alles um Suchen, genauer um Laravel Scout. In seinem Talk gab Jure Knezovic einen Einblick in die Verwendung von Scout in Kombination mit einem datenbankbasierten Treiber sowie Meilisearch.

Was genau ist Laravel Scout?

Scout ist eine treiberbasierte Lösung mit der Eloquent Modelle durchsucht werden können. Man kann sich Scout also als Verbindung zwischen Eloquent und den Indizes aller durchsuchbarer Ressourcen vorstellen. Scout ermöglicht es, diese Indizes einfacher zu speichern in beispielsweise MySQL-Datenbanken, Algolia, Meilisearch oder auch anderen Search-Index-Engines wie Elasticsearch.

Warum sollte man Scout verwenden?

Gerade wenn man als Entwickler:in auf der Suche nach einer Alternative zu SQL-Abfragen ist, lohnt es sich, sich mit Scout zu beschäftigen. Scout ist im Vergleich zu beispielsweise „where like%“-Abfragen wesentlich übersichtlicher und damit auch weniger anfällig für Fehler. Auch die Eingabe selbst ist simpler.

Wie wird Scout installiert?

Scout wird klassisch über den Composer installiert:

Composer require laravel/scout Php artisan vendor:publish –provider=”Laravel/Scout/ScoutServiceProvider”

Danach müssen die Treiber, Schlüssel, Präfixe, etc. in den config/scout.php gesetzt werden und use Searchable; zu den Modellen hinzugefügt werden. Dann kann die Suche auch schon starten.

Welche Voraussetzungen gibt es?

Für den erfolgreichen Einstaz von Scout muss vorab mit toSearchableArray() definiert werden, welche Spalten des Modells durchsuchbar sind.

Der Einsatz in der Praxis

Wie sich Laravel Scout in der Praxis mit einer Datenbank sowie Meilisearch als Treiber verhält, zeigt das Video.

Meilisearch ist eine quelloffene Suchmaschine, die flexibel in Webseiten und in Anwendungen integriert werden kann. Sie ist dabei hochgradig anpassbar und bietet nützliche Features wie die Aufnahme von Synonymen, dem Ausschließen bestimmter Worte oder Felder sowie einer individuellen Tippfehlertolleranz.

Dies schlägt sich auch in Jures Fazit nieder:

The database-based driver is very rudimentary but easy to link with Laravel. In comparison, Meilisearch offers much more extensive functionality, but at the same time is more trouble to install and set up.

Jure Knezovic, Developer

You don't want to miss a Meetup anymore?

Become part of our Laravel Meetup group!

join now