


Explication détaillée de l'intégration de PHP et Elasticsearch pour réaliser la fonction de recherche en texte intégral
Avec le développement d'Internet, les entreprises sont confrontées à des quantités de données textuelles de plus en plus importantes. Comment récupérer rapidement et précisément un contenu pertinent est devenu l'une des questions importantes pour les entreprises dans le domaine de l'information. En tant que moteur de recherche open source basé sur Lucene, Elasticsearch présente les caractéristiques d'une haute disponibilité, d'une grande évolutivité et d'une récupération rapide, ce qui en fait l'une des solutions privilégiées pour la récupération de texte intégral en entreprise. En tant que langage de programmation côté serveur populaire, PHP peut également effectuer rapidement du développement Web et du développement d'API, et est devenu l'un des langages couramment utilisés intégrés à Elasticsearch.
Cet article explique principalement les étapes détaillées de l'intégration de PHP et Elasticsearch pour réaliser la fonction de recherche en texte intégral.
1. Introduction à Elasticsearch
Elasticsearch est un moteur de recherche open source basé sur Lucene qui peut être utilisé pour récupérer rapidement et avec précision de grandes quantités de données textuelles. Elasticsearch adopte une architecture de stockage distribuée, prend en charge l'expansion horizontale et peut s'adapter aux besoins de stockage massif de données et de récupération rapide.
Elasticsearch fournit une interface API RESTful, prend en charge l'interaction des données au format JSON et peut être intégré aux langages de programmation couramment utilisés. Dans Elasticsearch, les données sont stockées en fonction des documents. Chaque document contient plusieurs champs, et chaque champ peut être imbriqué pour contenir d'autres champs, ce qui rend la structure des données plus flexible. Parallèlement, Elasticsearch prend en charge la récupération de texte intégral, la correspondance exacte, l'agrégation, l'analyse et d'autres opérations sur les documents.
2. Intégration de PHP et Elasticsearch
- Installer la bibliothèque Elasticsearch-PHP
Elasticsearch-PHP est officiellement fourni La bibliothèque client PHP encapsule l'interface API RESTful d'Elasticsearch, ce qui facilite l'utilisation d'Elasticsearch dans les applications PHP. Nous pouvons installer la bibliothèque via Composer et exécuter la commande suivante :
composer require elasticsearch/elasticsearch
- Connectez-vous à Elasticsearch
Avant de vous connecter à Elasticsearch, vous devez démarrer le service Elasticsearch. Pour utiliser la bibliothèque Elasticsearch-PHP pour vous connecter à Elasticsearch en PHP, vous devez d'abord instancier l'objet ElasticsearchClient et définir l'adresse IP et le port du serveur Elasticsearch connecté :
require 'vendor/autoload.php'; $client = ElasticsearchClientBuilder::create()->setHosts(['http://127.0.0.1:9200'])->build();
Parmi eux, la méthode setHosts() transmet un paramètre de tableau, chaque élément représente un serveur Elasticsearch et plusieurs serveurs peuvent être configurés pour obtenir une haute disponibilité et un équilibrage de charge.
- Créer un index
Dans Elasticsearch, un index est une structure de données utilisée pour stocker et récupérer des données similaires, semblable à une table dans un base de données. Vous pouvez créer un index nommé "my_index" via le code suivant :
$params = [ 'index' => 'my_index', 'body' => [ 'settings' => [ 'number_of_shards' => 5, // 分片数 'number_of_replicas' => 1, // 副本数 ], ], ]; $response = $client->indices()->create($params);
Parmi eux, dans le paramètre du tableau $params, 'settings' représente les paramètres de l'index, y compris des informations telles que le nombre de fragments et le nombre de répliques. 'body' représente le mappage de l'index. Vous pouvez définir les champs et les types de l'index dans ce paramètre.
- Ajouter des documents
L'ajout de documents dans Elasticsearch peut être réalisé via le code suivant :
$params = [ 'index' => 'my_index', 'id' => '1', 'body' => [ 'title' => 'Elasticsearch PHP集成', 'content' => 'Elasticsearch是一款基于Lucene的开源搜索引擎...' ] ]; $response = $client->index($params);
Où, $ Dans le paramètre de tableau params, « index » représente le nom d'index du document à ajouter ; « id » représente l'identifiant unique du document, un paramètre facultatif « body » représente le contenu du document et plusieurs champs et valeurs ; peut être réglé.
- Recherche de documents
La recherche de documents dans Elasticsearch peut être réalisée via le code suivant :
$params = [ 'index' => 'my_index', 'body' => [ 'query' => [ 'match' => [ 'title' => 'Elasticsearch PHP' ] ] ] ]; $response = $client->search($params);
Où , $ Dans le paramètre params array, 'index' représente le nom de l'index du document à rechercher ; 'body' représente la condition de requête. Plusieurs conditions de requête et règles de tri peuvent être définies.
3. PHP+Elasticsearch pour implémenter la récupération de texte intégral
- Créer un index
Avant d'utiliser Elasticsearch pour mettre en œuvre la récupération de texte intégral, les données à récupérer doivent d'abord être indexées. Lors de la création d'un index, vous pouvez définir le champ à récupérer sur le type texte, afin que l'indexation en texte intégral puisse être effectuée.
Dans cet exemple, supposons que les données à récupérer sont une table étudiant, contenant les champs id, nom, âge et score. Nous pouvons créer un index nommé « étudiant » via le code suivant :
$params = [ 'index' => 'student', 'body' => [ 'settings' => [ 'number_of_shards' => 5, 'number_of_replicas' => 1, ], 'mappings' => [ 'properties' => [ 'id' => ['type' => 'integer'], 'name' => ['type' => 'text', 'analyzer' => 'ik_max_word'], 'age' => ['type' => 'integer'], 'score' => ['type' => 'double'] ] ] ] ]; $response = $client->indices()->create($params);
Parmi eux, le type du champ 'nom' est défini sur texte, et un segmenteur de mots est spécifié. Le plug-in ik_max_word est utilisé ici. Le texte chinois peut être traité de manière à maximiser la segmentation des mots.
- Ajouter des documents
Une fois l'index créé, vous pouvez ajouter des documents à l'index. Supposons que vous souhaitiez ajouter des informations sur un élève, vous pouvez utiliser le code suivant pour y parvenir :
$params = [ 'index' => 'student', 'body' => [ 'id' => 1, 'name' => '张三', 'age' => 18, 'score' => 90.5 ] ]; $response = $client->index($params);
Vous pouvez ajouter plusieurs documents à l'index en les ajoutant en boucle.
- Recherche de documents
Après l'indexation et l'ajout de documents, la recherche en texte intégral est possible. Dans cet exemple, la requête de correspondance est utilisée pour effectuer une recherche en texte intégral, qui peut être recherchée en saisissant des mots-clés. Ceci peut être réalisé grâce au code suivant :
$params = [ 'index' => 'student', 'body' => [ 'query' => [ 'match' => [ 'name' => '张三' ] ] ] ]; $response = $client->search($params);
Parmi eux, le champ « nom » est utilisé pour la correspondance et peut être remplacé par d'autres champs nécessitant une récupération de texte intégral. Les informations renvoyées par les résultats de la recherche se trouvent dans $response et les résultats de la requête peuvent être obtenus et affichés.
4. Résumé
Cet article présente les étapes détaillées d'intégration de PHP et Elasticsearch pour réaliser la fonction de recherche en texte intégral. Grâce aux étapes de connexion à Elasticsearch, de création d'index, d'ajout de documents et de recherche de documents, vous pouvez récupérer rapidement et avec précision de grandes quantités de données texte. Lors d'une recherche en texte intégral, il est recommandé d'utiliser un segmenteur de mots pour segmenter le chinois afin d'améliorer la précision et l'efficacité de la recherche.
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Dans ce chapitre, nous comprendrons les variables d'environnement, la configuration générale, la configuration de la base de données et la configuration de la messagerie dans CakePHP.

PHP 8.4 apporte plusieurs nouvelles fonctionnalités, améliorations de sécurité et de performances avec une bonne quantité de dépréciations et de suppressions de fonctionnalités. Ce guide explique comment installer PHP 8.4 ou mettre à niveau vers PHP 8.4 sur Ubuntu, Debian ou leurs dérivés. Bien qu'il soit possible de compiler PHP à partir des sources, son installation à partir d'un référentiel APT comme expliqué ci-dessous est souvent plus rapide et plus sécurisée car ces référentiels fourniront les dernières corrections de bogues et mises à jour de sécurité à l'avenir.

Pour travailler avec la date et l'heure dans cakephp4, nous allons utiliser la classe FrozenTime disponible.

Travailler avec la base de données dans CakePHP est très simple. Nous comprendrons les opérations CRUD (Créer, Lire, Mettre à jour, Supprimer) dans ce chapitre.

Pour travailler sur le téléchargement de fichiers, nous allons utiliser l'assistant de formulaire. Voici un exemple de téléchargement de fichiers.

CakePHP est un framework open source pour PHP. Il vise à faciliter grandement le développement, le déploiement et la maintenance d'applications. CakePHP est basé sur une architecture de type MVC à la fois puissante et facile à appréhender. Modèles, vues et contrôleurs gu

Dans ce chapitre, nous allons apprendre les sujets suivants liés au routage ?

Le validateur peut être créé en ajoutant les deux lignes suivantes dans le contrôleur.
