Von E-Commerce-Plattformen bis hin zu Content Management Systemen (CMS) – Webanwendungen erzeugen und verarbeiten enorme Datenmengen. Die effiziente Extraktion relevanter Informationen aus diesen Daten ist entscheidend für ein reibungsloses Nutzererlebnis. Deshalb reichen herkömmliche Suchfunktionen, die wörtliche Suchanfragen abgleichen, nicht aus. Du brauchst eine Volltextsuche.

Eine Volltextsuche untersucht den gesamten Inhalt von Dokumenten oder Datenbanken und ermöglicht es dir, relevante Informationen aus großen Datenbeständen auf der Grundlage bestimmter Wörter oder Phrasen zu finden. Sie berücksichtigt Faktoren wie die Häufigkeit des Vorkommens und mehrsprachige Inhalte und liefert so genauere und umfassendere Suchergebnisse.

Meilisearch ist ein Vorreiter in dieser Klasse von Suchmaschinen und nutzt die Leistungsfähigkeit der Volltextsuche, um ein flexibles und leistungsfähiges Werkzeug anzubieten, das für Entwickler und Endnutzer entwickelt wurde.

Dieses Tutorial zeigt dir, wie du Meilisearch in ein Node.js-Webprojekt integrierst.

Was ist Meilisearch?

Meilisearch ist eine Open-Source-Suchmaschine, die schnelle, relevante Suchergebnisse für Endnutzer liefert. Sie ist typotolerant und funktioniert mit Standardeinstellungen, die für die meisten Projekte geeignet sind.

Meilisearch ist außerdem sehr anpassungsfähig und bietet zahlreiche Funktionen, um die Relevanz der Suchergebnisse zu verbessern. Die wichtigste dieser Funktionen sind die Rankingregeln, die du an dein Projekt anpassen kannst.

Es bietet eine intuitive RESTful API für die nahtlose Integration in praktisch jede Unternehmenswebsite. Du kannst es selbst hosten oder die offizielle Cloud-Hosting-Lösung Meilisearch Cloud nutzen, um schnell und mühelos loszulegen. In diesem Leitfaden wird Meilisearch Cloud verwendet.

Voraussetzungen

Um mitzumachen, brauchst du:

So richtest du Meilisearch ein

  1. Navigiere zu Meilisearch Cloud und erstelle entweder ein Konto oder melde dich an. Stelle sicher, dass du deine E-Mail-Adresse bestätigst.
  2. Klicke als Nächstes auf Projekt erstellen, einen Server, auf dem eine Meilisearch-Instanz läuft – dort fügst du die Datensätze für deine Website hinzu.
  3. Füge einen Projektnamen hinzu (z. B. book-app) und wähle deine bevorzugte Region. Klicke dann auf Erstellen. Nachdem du dein Projekt erstellt hast, kannst du auf Einstellungen klicken, um Details zu deinem Projekt zu sehen, z. B. die URL für den Zugriff auf die Datensätze, API-Schlüssel zum Schutz deiner Meilisearch-Instanz und andere Informationen.
    Die Übersichtsseite des Buch-App-Projekts
    Die Übersichtsseite des Buch-App-Projekts

    Es gibt drei API-Schlüssel, die jeweils für eine andere Berechtigungsstufe stehen:

    • Hauptschlüssel – Dieser Schlüssel schaltet alle Routen frei und ist der einzige, der Zugriff auf die Endpunkte zum Erstellen und Löschen von API-Schlüsseln hat. Verwende den Hauptschlüssel nur, um API-Schlüssel in einer geschützten Umgebung zu verwalten.
    • Standard-Such-API-Schlüssel – Dieser Schlüssel gewährt nur Zugriff auf die Suchroute. Du kannst ihn im clientseitigen Code verwenden.
    • Standard-Admin-API-Schlüssel – Mit diesem Schlüssel hast du Zugriff auf alle API-Routen mit Ausnahme von /keys, die zum Erstellen und Löschen von API-Schlüsseln dient. Du kannst diesen Schlüssel nur in einer geschützten Umgebung verwenden.

Wie man Daten mit Meilisearch indiziert

Indizes sind die Kernkomponenten, die durchsuchbare Daten speichern und organisieren. Sie fungieren als Container für Dokumente – Objekte, die ein oder mehrere Felder enthalten.

Jeder Index in Meilisearch ist unabhängig und anpassbar, so dass individuelle Regeln für das Suchranking und Filteroptionen möglich sind.

Wie man einen Index erstellt und Dokumente hinzufügt

  1. Klicke in der Navigationsleiste auf die Registerkarte Indizes in deinem Projekt.
  2. Klicke auf Einen Index erstellen. Gib als Nächstes einen Indexnamen ein (z. B. Bücher) und klicke auf Index erstellen.
  3. Wähle aus, wie du deine Dokumente importieren möchtest. Für diese Anleitung importierst du eine JSON-Datei, die 13 Bucheinträge aus der Google Book API enthält.
  4. Klicke auf Datei-Upload, lade die JSON-Datei hoch und klicke dann auf Dokumente importieren.

So aktualisierst und löschst du Dokumente

Meilisearch Cloud bietet derzeit keine Möglichkeit, Dokumente zu ändern oder zu löschen, aber du kannst die REST-API-Routen oder das SDK nutzen. Der folgende Code zeigt, wie du Dokumente über die REST-API-Endpunkte aktualisieren oder löschen kannst. In diesem Tutorial wird cURL verwendet, um mit den Routen zu arbeiten, aber du kannst auch eine API-Plattform wie Postman verwenden.

  1. Um Dokumente zu aktualisieren, sende eine PUT Anfrage an die folgende Route:
    /indexes/{index_uid}/documents

    Die index_uid oben ist der Indexname deines Projekts:

    Hervorgehobener Indexname
    Hervorgehobener Indexname

  2. Über diesen Weg kannst du eine Liste von Dokumenten hinzufügen oder aktualisieren, wenn sie bereits existieren. Um ein Dokument zu aktualisieren, musst du seinen Primärschlüssel anhängen. Das alte Dokument wird auf der Grundlage der Felder des neuen Dokuments teilweise aktualisiert. Nachfolgend findest du ein Beispiel dafür, wie du den Titel eines Dokuments im Index des Buches von „JavaScript für Kinder“ zu „JavaScript Coding für Kinder“ aktualisierst und ein Herausgeberfeld hinzufügst:
    curl \
        -X PUT '/indexes/books/documents' \
        -H 'Content-Type: application/json' \
        -H 'Authorization: Bearer ' \
            --data-binary '[
            {
                "id": "71nDBQAAQBAJ",
                "title": "JavaScript Coding for Kids",
                "publisher": "No Starch Press"
            }
        ]'
  3. Ersetze <your-project-url> und <your-admin-api-key> durch die entsprechenden Werte auf deiner Projektübersichtsseite:
    "taskUid": 26, "indexUid": "books", "status": "enqueued", "type": "documentAdditionOrUpdate", "equeuedAt": "2023-05-26T07:52:24.127920065Z"
  4. Für das Löschen von Dokumenten gibt es in Meilisearch drei Routen (Endpunkte):
    /indexes/{index_uid}/documents // Deleting all documents
    /indexes/{index_uid}/documents/{document_id} // Deleting a single document
    /indexes/{index_uid}/documents/delete-batch // Deleting a selection of  
    documents

    Du kannst die document_id von den Originaldaten aus der books.json-Datei erhalten, nachdem du das Dokument aus der MeiliSearch Cloud oder deiner Datenbank geholt hast.

Im Folgenden findest du ein Beispiel dafür, wie du das Buch, das du oben aktualisiert hast, löschen kannst:

curl \
    -H 'Authorization: Bearer ' \
    -X DELETE '/indexes/books/documents/71nDBQAAQBAJ'

Nachdem du die Anfrage gesendet hast, sollte deine Antwort wie folgt aussehen:

"taskUid": 10, "indexUid": "books", "status": "enqueued", "type": "documentDeletion", "equeuedAt": "2023-05-26T07:20:11.1291066"

Wie man MeiliSearch zu einem Webdienst hinzufügt

  1. Beginne damit, das Starterprojekt von GitHub zu klonen, indem du die folgenden Befehle in deinem Terminal ausführst:
    git clone https://github.com/Tammibriggs/meilisearch-app.git
    cd meilisearch​-app
    npm install

    Wenn du die package.json-Datei überprüfst, solltest du den Befehl start sehen. Führe npm start aus, um das Node.js-Projekt auf localhost port3000 auszuführen. Wenn du http://localhost:3000/ in deinem Browser eingibst, solltest du folgendes sehen:

    Meilisearch Demo-Starter-Anwendung
    Meilisearch Demo-Starter-Anwendung

  2. Sobald die Anwendung läuft, kannst du Meilisearch hinzufügen, damit das Suchformular beim Absenden die Ergebnisse von Meilisearch zurückgibt. Dazu installierst du Meilisearch, indem du den folgenden Befehl im Terminal ausführst:
    npm install meilisearch
  3. Außerdem musst du das npm-Paket dotenv installieren, um sensible Anmeldedaten aus einer .env-Datei zu laden. Führe den folgenden Befehl im Terminal aus:
    npm install dotenv
  4. Erstelle eine .env-Datei im Stammverzeichnis des Projekts und füge Folgendes hinzu:
    YOUR_PROJECT_URL= '<your-project-url>'
    YOUR_SEARCH_API_KEY= '<your-admin-api-key>'

    Achte darauf, dass du <your-project-url> und <your-admin-api-key> durch die entsprechenden Werte ersetzt.

  5. Als Nächstes importierst du meilisearch und das Paket dotenv in die Datei server.js und konfigurierst dotenv:
    import {MeiliSearch} from 'meilisearch'
    import dotenv from 'dotenv';
    dotenv.config();
  6. Dann initialisiere Meilisearch, damit du mit der Arbeit an deinem Books-Anwendungs-Projekt beginnen kannst. Navigiere zur Datei server.js und füge den folgenden Code nach der Definition der Variable searchValue ein:
    const client = new MeiliSearch({ host: process.env.YOUR_PROJECT_URL, apiKey: process.env.YOUR_SEARCH_API_KEY })
  7. Eine wichtige Funktion ist das Durchsuchen deines Buchindex in Meilisearch mithilfe des Suchwerts, der beim Absenden des Formulars an die URL angehängt wird. Um diese Funktion zu aktivieren, füge den folgenden Code nach der Variablendefinition client ein:
    const index = client.index('books')  
    const searchResults = !!searchValue && await index.search(searchValue)

    Dieser Code erstellt einen Verweis auf den Index des Buches. Dann sucht er mit der Methode search() nach Dokumenten, die mit dem Suchwert im Index des Buches übereinstimmen, wenn du searchValue definierst.

  8. Um die Suchergebnisse anzuzeigen, änderst du die Methode render() wie folgt:
    res.render('index', {
        books: searchResults ? searchResults.hits : [],
        searchValue
    })

    Jetzt kannst du mit der Suche im Index des Buches beginnen:

    Mit dem Suchformular den Index
    Mit dem Suchformular den Index „Bücher“ durchsuchen

  9. Nachdem du die oben genannten Codes hinzugefügt hast, sollte deine server.js-Datei wie folgt aussehen:
    import express from 'express';
    import { MeiliSearch } from 'meilisearch';
    import dotenv from 'dotenv';
    dotenv.config();
    
    const app = express();
    const PORT = process.env.PORT || 3000;
    
    app.set('view engine', 'ejs');
    app.use(express.static('public'));
    
    app.get('/', async (req, res) => {
    	const searchValue = req.query.search;
    	const client = new MeiliSearch({
    		host: process.env.YOUR_PROJECT_URL,
    		apiKey: process.env.YOUR_SEARCH_API_KEY,
    	});
    	const index = client.index('books');
    	const searchResults = !!searchValue && (await index.search(searchValue));
    
    	res.render('index', {
    		books: searchResults ? searchResults.hits : [],
    		searchValue,
    	});
    });
    
    app.listen(PORT, () => {
    	console.log(`listening at http://localhost:${PORT}`);
    });

Du kannst den kompletten Code für dieses Tutorial auf GitHub einsehen.

Zusammenfassung

Meilisearch ist eine hervorragende Suchmaschinenlösung, die die Suchfunktionen einer Website und das Nutzererlebnis verbessert. Die außergewöhnliche Geschwindigkeit, der auf Relevanz ausgerichtete Ranking-Algorithmus und der nahtlose Integrationsprozess machen sie zu einem unschätzbaren Werkzeug, wenn du die Suchfunktionen deiner Website optimieren willst.

Der Kinsta Anwendungs-Hosting-Dienst steigert die Leistung von Meilisearch-gestützten Anwendungen nahtlos. Mit einer robusten Infrastruktur und optimierten Serverumgebungen sorgt Kinsta für eine schnelle Suchfunktionalität und verbessert so das Nutzererlebnis. Die Skalierbarkeit der Plattform passt sich den Anforderungen von Meilisearch an und garantiert einen zuverlässigen und effizienten Suchbetrieb.

Auf welche Suchmaschine setzt du bei deinen Projekten? Lass es uns im Kommentarbereich wissen!

Jeremy Holcombe Kinsta

Content & Marketing Editor bei Kinsta, WordPress Web Developer und Content Writer. Außerhalb von WordPress genieße ich den Strand, Golf und Filme. Außerdem habe ich Probleme mit großen Menschen ;).