Comment créer un moteur de recherche en texte intégral en utilisant PHP et Elasticsearch

王林
Libérer: 2023-05-27 08:16:01
original
1286 Les gens l'ont consulté

Comment créer un moteur de recherche en texte intégral à l'aide de PHP et Elasticsearch

Les moteurs de recherche en texte intégral jouent un rôle important dans l'Internet moderne, permettant aux utilisateurs de trouver rapidement les informations qui répondent à leurs besoins. Un bon moteur de recherche en texte intégral doit non seulement effectuer une recherche rapide, mais doit également fournir des résultats de recherche de haute qualité. Cet article vous apprendra comment créer un moteur de recherche en texte intégral à l'aide de PHP et Elasticsearch.

Qu'est-ce qu'Elasticsearch ?

Elasticsearch est un moteur de recherche open source basé sur la bibliothèque de moteurs de recherche Lucene. Il fournit un moteur de recherche en texte intégral distribué et multi-tenant et est capable de traiter automatiquement des données à grande échelle. Elasticsearch peut rechercher et analyser des données rapidement et prend en charge la recherche en temps réel, ce qui signifie qu'à mesure que les données sont mises à jour, Elasticsearch peut renvoyer les résultats de recherche à partir de nouvelles données en quelques millisecondes.

Elasticsearch prend en charge une variété de types de données, notamment du texte, des valeurs numériques, des dates, des emplacements géographiques, etc. En utilisant Elasticsearch, nous pouvons rapidement créer un moteur de recherche en texte intégral et le personnaliser en fonction de différents besoins.

Connectez-vous à Elasticsearch à l'aide de PHP

Pour vous connecter à Elasticsearch à l'aide de PHP, nous devons installer la bibliothèque cliente Elasticsearch PHP. Le moyen le plus simple d'installer cette bibliothèque est d'utiliser Composer, qui peut être installé avec la commande suivante :

composer require elasticsearch/elasticsearch
Copier après la connexion

Une fois l'installation terminée, référencez cette bibliothèque dans le code :

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;
Copier après la connexion

Ici, nous utilisons la classe ClientBuilder du PHP Elasticsearch bibliothèque cliente pour se connecter à Elasticsearch .

$config = [

'hosts' => ['localhost:9200']
Copier après la connexion

];

$client = ClientBuilder::create()->setHosts($config['hosts'])->build();

Ici, nous utilisons la classe ClientBuilder pour créer un client Elasticsearch et vous connecter en utilisant le nom d'hôte et le port du cluster.

Créer un index

Dans un moteur de recherche en texte intégral, les données doivent être stockées dans l'index, pas dans la base de données. Pour créer un index, nous devons d'abord définir la structure des données et les paramètres de l'index. Cette structure est appelée cartographie.

Pour cet exemple, supposons que nous souhaitions créer un moteur de recherche pour rechercher des articles. Les articles comportent des champs tels que le titre, l'auteur, la date de publication et le texte. Nous pouvons définir le mappage en utilisant le code suivant :

$params = [

'index' => 'articles',
'body' => [
    'mappings' => [
        'article' => [
            'properties' => [
                'title' => ['type' => 'text'],
                'author' => ['type' => 'text'],
                'publish_date' => ['type' => 'date'],
                'body' => ['type' => 'text']
            ]
        ]
    ]
]
Copier après la connexion

];

$response = $client->indices()->create($params);

Ici, nous définissons un nom d'index Il s'agit des « articles » et définit la cartographie des articles, notamment le titre, l'auteur, la date de publication et le texte de l'article. Cela créera un index appelé « articles » contenant un type appelé « article » qui contient les champs que nous avons définis.

Après avoir créé l'index, nous pouvons commencer à ajouter des données à l'index.

Ajouter des données

Pour ajouter des données, nous écrivons les données dans Elasticsearch en appelant la méthode index :

$params = [

'index' => 'articles',
'type' => 'article',
'id' => 1,
'body' => [
    'title' => '如何使用PHP和Elasticsearch构建全文搜索引擎',
    'author' => 'John Doe',
    'publish_date' => '2020-01-01',
    'body' => '全文搜索引擎在现代互联网中扮演着重要的角色……'
]
Copier après la connexion

];

$client->index($params);

Ici, nous spécifiez l'index "articles" et le type "article" à indexer, en utilisant un identifiant unique. Lors de l'indexation des données, nous écrivons les données dans Elasticsearch, les indexons et les rendons consultables.

Interrogation de données

Pour interroger des données, nous devons construire une requête de requête et l'envoyer au serveur Elasticsearch. Nous pouvons utiliser une requête de correspondance, qui fera correspondre les mots-clés dans les champs. Par exemple :

$query = [

'match' => [
    'title' => 'Elasticsearch'
]
Copier après la connexion

];

$params = [

'index' => 'articles',
'type' => 'article',
'body' => [
    'query' => $query
]
Copier après la connexion

];

$response = $client->search($params);

Ici, nous interrogeons tous les "articles" index Dans le fichier de type "article", le document contient le champ "titre", et le champ "titre" contient le mot clé "Elasticsearch".

Elasticsearch prend également en charge de nombreux autres types de requêtes, telles que les requêtes booléennes, les requêtes par plage, les requêtes par préfixe, etc. Comprendre tous les types de requêtes et comment les utiliser peut rendre les moteurs de recherche plus adaptables à différents types de données.

Conclusion

Dans cet article, nous avons appris à créer un moteur de recherche en texte intégral à l'aide de PHP et Elasticsearch. Nous avons d'abord installé la bibliothèque client PHP Elasticsearch et l'avons utilisée pour nous connecter au serveur Elasticsearch. Ensuite, nous créons un index appelé « articles » et définissons le mappage des articles. Après cela, nous avons ajouté quelques données et exécuté une requête. Enfin, nous avons appris qu'Elasticsearch prend en charge de nombreux types de requêtes et comment les utiliser afin de pouvoir créer un moteur de recherche en texte intégral plus puissant, adapté à différents types de données.

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!

Étiquettes associées:
source:php.cn
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal