Maison  >  Article  >  développement back-end  >  Utiliser Elasticsearch en PHP pour implémenter un moteur de recherche distribué

Utiliser Elasticsearch en PHP pour implémenter un moteur de recherche distribué

WBOY
WBOYoriginal
2023-10-03 09:01:511376parcourir

PHP 中使用 Elasticsearch 实现分布式搜索引擎

Utiliser Elasticsearch en PHP pour implémenter un moteur de recherche distribué

Introduction :
Le moteur de recherche distribué est une partie très importante des applications Internet modernes. Il peut permettre une récupération rapide du texte intégral, une recherche et un tri efficaces des données. Elasticsearch est un moteur de recherche distribué open source basé sur Lucene, offrant de puissantes fonctionnalités de recherche et d'analyse. Cet article explique comment utiliser Elasticsearch en PHP pour implémenter un moteur de recherche distribué simple et fournit des exemples de code spécifiques.

Prérequis :
Avant de commencer, assurez-vous d'avoir installé Elasticsearch et l'environnement PHP et d'être connecté avec succès à Elasticsearch. Vous pouvez télécharger et installer Elasticsearch via le site officiel d'Elasticsearch (https://www.elastic.co/downloads/elasticsearch), et installer le client PHP d'Elasticsearch via Composer (https://www.elastic.co/guide/ fr /elasticsearch/client/php-api/current/introduction.html#_installation_2).

Exemple de contexte :
Supposons que nous ayons un système de blog avec plusieurs articles de blog et balises dans le système. Nous voulons pouvoir rechercher des articles de blog par mots-clés et les trier en fonction de leur pertinence. Nous utilisons Elasticsearch pour créer un moteur de recherche distribué simple afin de mettre en œuvre la récupération et le tri du texte intégral des articles de blog.

Exemple de code :
Voici un exemple de code simple qui montre comment utiliser le client PHP d'Elasticsearch pour implémenter un moteur de recherche distribué :

<?php
require 'vendor/autoload.php';

// 设置Elasticsearch的连接信息
$hosts = [
    [
        'host' => 'localhost',
        'port' => 9200,
        'scheme' => 'http',
        'user' => 'username', // 可选的用户名
        'pass' => 'password' // 可选的密码
    ]
];

// 创建Elasticsearch客户端
$client = ElasticsearchClientBuilder::create()
            ->setHosts($hosts)
            ->build();

// 创建索引(博客文章)
$params = [
    'index' => 'blog',
    'body' => [
        'settings' => [
            'number_of_shards' => 2, // 分片数
            'number_of_replicas' => 1 // 副本数
        ],
        'mappings' => [
            'properties' => [
                'title' => [
                    'type' => 'text',
                    'analyzer' => 'standard'
                ],
                'content' => [
                    'type' => 'text',
                    'analyzer' => 'standard'
                ],
                'tags' => [
                    'type' => 'keyword'
                ]
            ]
        ]
    ]
];

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

// 添加文档(博客文章)
$params = [
    'index' => 'blog',
    'id' => 1,
    'body' => [
        'title' => 'PHP入门教程',
        'content' => '这是一篇PHP入门教程的示例文章。',
        'tags' => ['PHP', '教程']
    ]
];

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

// 搜索文档(博客文章)
$params = [
    'index' => 'blog',
    'body' => [
        'query' => [
            'match' => [
                'content' => 'PHP'
            ]
        ],
        'sort' => [
            '_score' => 'desc'
        ]
    ]
];

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

// 解析搜索结果
foreach ($response['hits']['hits'] as $hit) {
    $source = $hit['_source'];
    echo '文章标题:' . $source['title'] . '<br>';
    echo '文章内容:' . $source['content'] . '<br>';
    echo '相关标签:' . implode(', ', $source['tags']) . '<br>';
    echo '<hr>';
}
?>

Résumé :
Cet article explique comment implémenter une distribution simple à l'aide d'Elasticsearch dans le moteur de recherche PHP. Grâce à cet exemple, nous avons appris les opérations de base d'Elasticsearch, notamment la création d'index, l'ajout de documents, la recherche de documents et l'analyse des résultats de recherche. Dans les applications réelles, vous pouvez effectuer des opérations plus complexes selon vos besoins, telles que des analyseurs personnalisés, des filtres et des agrégations. J'espère que cet article vous sera utile et vous incitera à apprendre et à appliquer Elasticsearch plus en profondeur.

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