Maison  >  Article  >  cadre php  >  Développement Laravel : Comment implémenter la recherche en texte intégral à l'aide de Laravel Scout ?

Développement Laravel : Comment implémenter la recherche en texte intégral à l'aide de Laravel Scout ?

王林
王林original
2023-06-14 10:14:101271parcourir

Développement Laravel : Comment utiliser Laravel Scout pour implémenter la recherche en texte intégral ?

Laravel Scout est une solution de recherche en texte intégral Laravel. Il s'agit d'un logiciel open source populaire qui permet aux développeurs d'implémenter facilement des fonctions de recherche en texte intégral efficaces. Dans cet article, nous présenterons comment utiliser Laravel Scout pour implémenter la fonctionnalité de recherche en texte intégral.

Installer Laravel Scout

Tout d'abord, nous devons installer Laravel Scout. Il peut être installé à l'aide de Composer :

composer require laravel/scout

Ensuite, il faut installer un moteur de recherche externe comme Algolia ou Elasticsearch. Nous introduisons ici l'utilisation d'Algolia comme moteur de recherche.

Algolia est un moteur de recherche basé sur le cloud qui fournit une API puissante et un ensemble d'outils qui vous permettent de créer, configurer et utiliser facilement des moteurs de recherche. Afin d'utiliser Algolia comme moteur de recherche de Laravel Scout, nous devons installer son SDK :

composer require algolia/algoliasearch-client-php

Configurer Algolia

Ensuite, nous devons configurer Algolia. Tout d’abord, nous devons créer un compte Algolia et créer une application et un index. L'utilisation d'Algolia ne sera pas présentée en détail ici. Les lecteurs intéressés peuvent consulter eux-mêmes sa documentation officielle.

Ensuite, nous devons ajouter l'ID d'application d'Algolia et la clé API au fichier .env de Laravel :

ALGOLIA_APP_ID=your_application_id
ALGOLIA_SECRET=your_api_secret

Configurer le modèle de recherche dans la base de données

Ensuite, nous devons définir notre modèle de recherche et le configurer. Ajouté à Laravel Scout . Dans cet exemple, nous rechercherons notre modèle d'article. Tout d'abord, nous devons utiliser le trait Searchable dans notre modèle d'article :

use LaravelScoutSearchable;

class Post extends Model
{
    use Searchable;
    ...
}

Ensuite, nous devons définir une méthode searchableAs sur le modèle pour spécifier quel index Algolia sera recherché :

public function searchableAs()
{
    return 'posts_index';
}

Créez cet index dans Algolia et cet index sera Utilisé pour stocker nos enregistrements d'articles. Ensuite, dans notre modèle de recherche (le modèle Post dans ce cas), nous devons définir une méthode toSearchableArray :

public function toSearchableArray()
{
    $array = $this->toArray();

    return $array;
}

La méthode toSearchableArray renvoie un tableau associatif contenant tous les champs consultables.

Recherche avec Laravel Scout

Maintenant que nous avons terminé la configuration de Laravel Scout et d'Algolia, nous avons également mis en place le modèle de recherche dans notre modèle d'article. Maintenant, nous devons implémenter une page de recherche dans notre application.

Nous avons besoin d'un formulaire de recherche qui est soumis à un contrôleur qui traitera la requête de recherche et l'enverra à Algolia pour la recherche. Nous devons utiliser la méthode de recherche de Laravel Scout pour rechercher dans l'index Algolia :

public function search(Request $request)
{
    $search = $request->get('q');

    $posts = Post::search($search)->get();

    return view('search', compact('posts', 'search'));
}

La méthode de recherche renvoie un ensemble de résultats de recherche Laravel Scout grâce auquel nous pouvons obtenir les résultats de la recherche.

Enfin, nous devons afficher les résultats de la recherche à l'utilisateur. Dans les pages Web, nous pouvons utiliser le moteur de modèles Blade de Laravel pour afficher les résultats :

@if(count($posts) > 0)
    @foreach($posts as $post)
        <div class="post">
            <h2>{{$post->title}}</h2>
            <p>{{$post->content}}</p>
        </div>
    @endforeach
@else
    <div class="alert alert-warning">
        No results found for "{{$search}}"
    </div>
@endif

Conclusion

Laravel Scout est une solution de recherche en texte intégral populaire basée sur des moteurs de recherche externes tels qu'Algolia, qui permet aux développeurs de mettre facilement en œuvre une recherche en texte intégral efficace. fonction. Dans cet article, nous avons appris à utiliser Laravel Scout pour implémenter la recherche en texte intégral, notamment en configurant Algolia, en créant un modèle de recherche et en utilisant Laravel Scout pour effectuer une recherche dans votre application. Cela nous aide à ajouter plus facilement de puissantes capacités de recherche à nos applications, améliorant ainsi l'expérience utilisateur.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn