Heim >Datenbank >MySQL-Tutorial >Wie implementiert man eine relevante Suche in Laravel mit mehreren Schlüsselwörtern?
Laravel-Suche mit mehreren Schlüsselwörtern und Relevanzsortierung
Einführung
Dieser Artikel befasst sich mit einem häufigen Problem Herausforderung bei der Laravel-Entwicklung: Implementierung einer Suchfunktion, die mehrere Schlüsselwörter für mehrere Datenbankspalten einbezieht. Die Suchergebnisse müssen nach Relevanz geordnet werden, wobei das Vorhandensein und die Reihenfolge der angegebenen Schlüsselwörter zu berücksichtigen sind.
Problemstellung
Ein Benutzer versucht, eine Suchmaschine zu implementieren Laravel, bei dem mehrere Schlüsselwörter in eine Suchleiste eingegeben werden und die Ergebnisse in der Reihenfolge ihrer Relevanz angezeigt werden. Zwei spezifische Spalten, meta_name und meta_description, müssen abgefragt werden. Die Suchkriterien lauten wie folgt:
Lösung
Um diese Reihenfolge zu erreichen, werden drei separate Datenbankabfragen erstellt:
$all = DB::table('posts') ->where('meta_name', 'like', ... /* %word1% %word2% %word3% */) ->orWhere('meta_description', 'like', ... /* %word1% %word2% %word3% */); $twoWords = DB::table('posts') ->where('meta_name', 'like', ... /* %word1% %word2% */) ->orWhere('meta_description', 'like', ... /* %word1% %word2% */) ->whereNotIn('id', $all->pluck('id')); $oneWord = DB::table('posts') ->where('meta_name', 'like', ... /* %word1% */) ->orWhere('meta_description', 'like', ... /* %word1% */) ->whereNotIn('id', $all->pluck('id')) ->whereNotIn('id', $twoWords->pluck('id'));
Union und Reihenfolge
Abschließend werden die drei Ergebnismengen mit kombiniert Union:
$posts = $all->union($twoWords)->union($oneWord)->skip($start)->take($this->rowperpage)->get();
Dieser Prozess stellt sicher, dass Zeilen, die den angegebenen Kriterien entsprechen, in der gewünschten Relevanzreihenfolge abgerufen werden.
Paginierung und asynchrones Laden
Um die Load-on-Scroll-Paginierung zu implementieren, kann eine Skip-and-Take-Methode verwendet werden, um neue Ergebnisse anzuhängen, während der Benutzer scrollt. Wenn keine Daten mehr angezeigt werden können, kann eine Meldung zurückgegeben werden.
Fazit
Mit der bereitgestellten Lösung ruft die Suchfunktion relevante Ergebnisse basierend auf mehreren Schlüsselwörtern ab und ihre Reihenfolge des Erscheinens in den angegebenen Spalten. Die Ergebnisse werden im Load-on-Scroll-Verfahren angezeigt und sorgen so für ein nahtloses Benutzererlebnis.
Das obige ist der detaillierte Inhalt vonWie implementiert man eine relevante Suche in Laravel mit mehreren Schlüsselwörtern?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!