Maison  >  Article  >  développement back-end  >  Technologie d'affichage et de personnalisation des résultats de recherche basée sur Elasticsearch en PHP

Technologie d'affichage et de personnalisation des résultats de recherche basée sur Elasticsearch en PHP

WBOY
WBOYoriginal
2023-10-03 09:00:401147parcourir

PHP 中基于 Elasticsearch 的搜索结果展示与定制技术

Technologie d'affichage et de personnalisation des résultats de recherche basée sur Elasticsearch en PHP

Introduction :
À l'ère d'Internet moderne, les fonctions de recherche font partie intégrante des sites Web et des applications. Comment afficher rapidement et avec précision les résultats souhaités par les utilisateurs via les moteurs de recherche a toujours été un défi auquel sont confrontés les développeurs. Elasticsearch est un moteur de recherche en texte intégral distribué open source qui est très populaire parmi les développeurs pour ses performances élevées et ses puissantes capacités de recherche et d'analyse. Cet article présentera la technologie d'affichage et de personnalisation des résultats de recherche basée sur Elasticsearch en PHP, et fournira des exemples de code spécifiques.

1. Installation et configuration d'Elasticsearch

Tout d'abord, nous devons installer et démarrer Elasticsearch. Vous pouvez télécharger la dernière version stable sur le site officiel d'Elasticsearch (https://www.elastic.co/), l'installer et la configurer conformément à la documentation officielle.

2. Bibliothèque client PHP Elasticsearch

En PHP, nous pouvons utiliser la bibliothèque client Elasticsearch officiellement fournie pour interagir avec Elasticsearch. Vous pouvez utiliser Composer pour installer :

composer require elasticsearch/elasticsearch

Une fois l'installation terminée, vous pouvez introduire la bibliothèque client Elasticsearch dans le projet :

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

3. Créer un index et des documents

Avant de lancer la recherche, nous devons créer un index et ajoutez quelques documents au milieu Elasticsearch. Voici un exemple de code PHP :

$client = ClientBuilder::create()->build();

$params = [
    'index' => 'my_index',
    'body' => [
        'settings' => [
            'number_of_shards' => 1,
            'number_of_replicas' => 0
        ],
        'mappings' => [
            'properties' => [
                'title' => [
                    'type' => 'text'
                ],
                'content' => [
                    'type' => 'text'
                ]
            ]
        ]
    ]
];

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

$params = [
    'index' => 'my_index',
    'body' => [
        [
            'index' => [
                '_index' => 'my_index',
                '_id' => '1'
            ]
        ],
        [
            'title' => 'PHP Elasticsearch 搜索实战',
            'content' => '在 PHP 中使用 Elasticsearch 进行高效的搜索技术实战。'
        ],
        [
            'index' => [
                '_index' => 'my_index',
                '_id' => '2'
            ]
        ],
        [
            'title' => 'Elasticsearch 基础教程',
            'content' => '学习使用 Elasticsearch 基础教程,从入门到精通。'
        ],
    ]
];

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

IV. Recherche et affichage

Ensuite, nous montrerons comment utiliser Elasticsearch en PHP pour rechercher et afficher les résultats à l'utilisateur. Voici un exemple de code PHP :

$client = ClientBuilder::create()->build();

$params = [
    'index' => 'my_index',
    'body' => [
        'query' => [
            'match' => [
                'title' => 'Elasticsearch'
            ]
        ]
    ]
];

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

foreach ($response['hits']['hits'] as $hit) {
    echo $hit['_source']['title'] . '<br>';
    echo $hit['_source']['content'] . '<br><br>';
}

Le code ci-dessus recherchera les documents indexés dans my_index qui contiennent Elasticsearch dans le titre et imprimera les résultats. my_index 中标题中包含 Elasticsearch 的文档,并将结果打印出来。

五、搜索结果定制化

除了简单的搜索和展示,我们还可以对搜索结果进行定制化处理。以下是一个定制化处理搜索结果的示例代码:

$client = ClientBuilder::create()->build();

$params = [
    'index' => 'my_index',
    'body' => [
        'query' => [
            'match' => [
                'title' => 'Elasticsearch'
            ]
        ],
        'highlight' => [
            'pre_tags' => '<strong>',
            'post_tags' => '</strong>',
            'fields' => [
                'title' => new stdClass(),
                'content' => new stdClass()
            ]
        ]
    ]
];

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

foreach ($response['hits']['hits'] as $hit) {
    $title = isset($hit['highlight']['title']) ? implode(' ', $hit['highlight']['title']) : $hit['_source']['title'];
    $content = isset($hit['highlight']['content']) ? implode(' ', $hit['highlight']['content']) : $hit['_source']['content'];

    echo $title . '<br>';
    echo $content . '<br><br>';
}

以上代码将引入高亮的功能,将搜索到的结果中匹配的关键词用 8e99a69fbe029cd4e2b854e244eab143

5. Personnalisation des résultats de recherche


En plus d'une recherche et d'un affichage simples, nous pouvons également personnaliser les résultats de recherche. Voici un exemple de code pour un traitement personnalisé des résultats de recherche :

rrreee🎜Le code ci-dessus introduira la fonction de surbrillance et marquera les mots-clés correspondants dans les résultats de recherche avec la balise 8e99a69fbe029cd4e2b854e244eab143. 🎜🎜Conclusion : 🎜En utilisant Elasticsearch et la bibliothèque client PHP, nous pouvons rapidement implémenter des fonctions de recherche en PHP et personnaliser les résultats de recherche. J'espère que le contenu de cet article vous sera utile pour utiliser Elasticsearch en PHP pour afficher et personnaliser les résultats de 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:
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