Comment créer un moteur de recherche performant avec php Elasticsearch ?
À mesure que la quantité de données continue de croître, la création d'un moteur de recherche performant devient de plus en plus importante. Elasticsearch est un moteur de recherche et d'analyse open source puissant mais facile à utiliser et l'un des outils privilégiés pour créer des moteurs de recherche hautes performances. Cet article expliquera comment utiliser la bibliothèque php Elasticsearch pour créer un moteur de recherche hautes performances et donnera des exemples de code détaillés.
Tout d'abord, nous devons installer le serveur Elasticsearch. Vous pouvez télécharger et installer la version adaptée à votre système d'exploitation à partir du site officiel d'Elasticsearch. Une fois l'installation terminée, démarrez le serveur Elasticsearch.
Ensuite, nous devons installer la bibliothèque php Elasticsearch dans notre projet PHP. Composer peut être utilisé pour gérer les dépendances PHP. Créez un fichier composer.json dans le répertoire racine de votre projet et ajoutez-y le code suivant :
{ "require": { "elasticsearch/elasticsearch": "^7.0" } }
Exécutez ensuite la commande composer install
pour installer la bibliothèque php Elasticsearch.
Une fois que nous avons installé la bibliothèque php Elasticsearch, nous pouvons nous connecter au serveur Elasticsearch. Dans votre fichier PHP, utilisez le code suivant pour créer une instance client Elasticsearch :
<?php require 'vendor/autoload.php'; use ElasticsearchClientBuilder; $client = ClientBuilder::create()->build();
Les indices sont les structures logiques utilisées dans Elasticsearch pour stocker et organiser les données. Nous devons créer un nouvel index dans Elasticsearch pour stocker nos données. Utilisez le code suivant pour créer un index nommé "my_index":
$params = [ 'index' => 'my_index' ]; $response = $client->indices()->create($params);
Une fois l'index créé, nous pouvons commencer à ajouter des documents à l'index. Un document est la plus petite unité de stockage dans Elasticsearch. Ajoutez un nouveau document en utilisant le code suivant :
$params = [ 'index' => 'my_index', 'body' => [ 'title' => 'Example Document', 'content' => 'This is an example document', 'tags' => ['example', 'document'] ] ]; $response = $client->index($params);
Maintenant que nous avons ajouté le document à l'index, nous pouvons commencer la recherche. Utilisez le code suivant pour effectuer une requête de recherche simple :
$params = [ 'index' => 'my_index', 'body' => [ 'query' => [ 'match' => [ 'content' => 'example' ] ] ] ]; $response = $client->search($params);
Cela renverra les documents qui correspondent aux critères de recherche.
En plus des fonctions de recherche de base, Elasticsearch prend également en charge des fonctions de recherche plus avancées, telles que l'agrégation, les filtres et le tri. Voici un exemple de code :
$params = [ 'index' => 'my_index', 'body' => [ 'aggs' => [ 'by_tag' => [ 'terms' => [ 'field' => 'tags' ] ] ] ] ]; $response = $client->search($params);
Cela renverra des résultats agrégés regroupés par balises.
$params = [ 'index' => 'my_index', 'body' => [ 'query' => [ 'bool' => [ 'must' => [ 'match' => ['content' => 'example'] ], 'filter' => [ 'range' => [ 'date' => [ 'gte' => '2021-01-01' ] ] ] ] ] ] ]; $response = $client->search($params);
Cela renverra les documents qui répondent aux critères de recherche et dont la date est supérieure ou égale au 1er janvier 2021.
$params = [ 'index' => 'my_index', 'body' => [ 'query' => [ 'match' => ['content' => 'example'] ], 'sort' => [ 'date' => 'desc' ] ] ]; $response = $client->search($params);
Cela renverra les documents triés par date dans l'ordre décroissant.
Grâce aux étapes ci-dessus, nous avons construit un moteur de recherche de base en utilisant la bibliothèque php Elasticsearch et ajouté quelques fonctions de recherche avancées courantes. Vous pouvez l’étendre et l’optimiser davantage en fonction de vos besoins. J'espère que cet article vous a aidé à développer des moteurs de recherche performants.
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!