Maison développement back-end tutoriel php Explication détaillée de l'intégration de PHP et Elasticsearch pour réaliser la fonction de recherche en texte intégral

Explication détaillée de l'intégration de PHP et Elasticsearch pour réaliser la fonction de recherche en texte intégral

Jun 25, 2023 am 10:14 AM
php elasticsearch 全文检索

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

  1. 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
Copier après la connexion
  1. 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();
Copier après la connexion

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.

  1. 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);
Copier après la connexion

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.

  1. 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);
Copier après la connexion

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é.

  1. 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);
Copier après la connexion

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

  1. 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);
Copier après la connexion

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.

  1. 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);
Copier après la connexion

Vous pouvez ajouter plusieurs documents à l'index en les ajoutant en boucle.

  1. 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);
Copier après la connexion

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!

Déclaration de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Où trouver la courte de la grue à atomide atomique
1 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Configuration du projet CakePHP Configuration du projet CakePHP Sep 10, 2024 pm 05:25 PM

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.

Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Guide d'installation et de mise à niveau de PHP 8.4 pour Ubuntu et Debian Dec 24, 2024 pm 04:42 PM

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.

Date et heure de CakePHP Date et heure de CakePHP Sep 10, 2024 pm 05:27 PM

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

CakePHP travaillant avec la base de données CakePHP travaillant avec la base de données Sep 10, 2024 pm 05:25 PM

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.

Téléchargement de fichiers CakePHP Téléchargement de fichiers CakePHP Sep 10, 2024 pm 05:27 PM

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.

Discuter de CakePHP Discuter de CakePHP Sep 10, 2024 pm 05:28 PM

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

Routage CakePHP Routage CakePHP Sep 10, 2024 pm 05:25 PM

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

CakePHP créant des validateurs CakePHP créant des validateurs Sep 10, 2024 pm 05:26 PM

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

See all articles