Maison  >  Article  >  développement back-end  >  Comment implémenter la mise en évidence pour la recherche en texte intégral à l'aide de php Elasticsearch ?

Comment implémenter la mise en évidence pour la recherche en texte intégral à l'aide de php Elasticsearch ?

WBOY
WBOYoriginal
2023-09-13 10:57:31759parcourir

如何使用php Elasticsearch实现全文搜索的高亮显示?

Comment utiliser PHP Elasticsearch pour mettre en évidence une recherche en texte intégral ?

Résumé : Cet article explique comment utiliser la bibliothèque PHP Elasticsearch pour mettre en évidence la recherche en texte intégral. Nous verrons comment configurer les champs en surbrillance, comment effectuer une recherche en texte intégral et comment obtenir les résultats en surbrillance.

Elasticsearch est un puissant moteur de recherche open source capable de gérer efficacement des recherches en texte intégral à grande échelle. PHP Elasticsearch est une bibliothèque PHP qui interagit avec Elasticsearch et fournit des API et des fonctions riches.

Tout d’abord, assurez-vous que la bibliothèque PHP Elasticsearch est installée. Il peut être installé via Composer ou téléchargé depuis le site officiel et installé manuellement.

Avant de commencer, vous devez créer un index Elasticsearch et y ajouter des données. Ces opérations peuvent être réalisées à l'aide de l'API RESTful d'Elasticsearch ou d'autres outils.

Voici un exemple simple montrant comment créer un index (nommé "my_index") et ajouter des données :

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

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

$params = [
    'index' => 'my_index',
    'body' => [
        [
            'title' => 'Title 1',
            'content' => 'This is the content of document 1.'
        ],
        [
            'title' => 'Title 2',
            'content' => 'This is the content of document 2.'
        ],
        [
            'title' => 'Title 3',
            'content' => 'This is the content of document 3.'
        ]
    ]
];

$client->index($params);

Ensuite, nous devons définir quels champs doivent être mis en surbrillance. Lors de la recherche, nous utiliserons le paramètre highlight d'Elasticsearch pour réaliser la mise en évidence. Voici un exemple de définition d'un champ en surbrillance : highlight参数来实现高亮。以下是一个设置高亮字段的例子:

$searchParams = [
    'index' => 'my_index',
    'type' => 'my_type',
    'body' => [
        'query' => [
            'match' => [
                'content' => 'search keyword'
            ]
        ],
        'highlight' => [
            'fields' => [
                'content' => new stdClass()
            ]
        ]
    ]
];

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

上述代码中,我们设置了content

foreach ($response['hits']['hits'] as $hit) {
    $highlight = $hit['highlight'];

    echo 'Title: ' . $hit['_source']['title'] . '<br>';

    echo 'Content: ';
    if (isset($highlight['content'])) {
        echo implode(' ... ', $highlight['content']);
    } else {
        echo $hit['_source']['content'];
    }

    echo '<hr>';
}

Dans le code ci-dessus, nous définissons le champ content pour qu'il soit surligné. Lors d'une recherche, Elasticsearch inclura les données des champs en surbrillance dans les résultats renvoyés.

Enfin, nous devons obtenir les résultats mis en évidence à partir des résultats de recherche et les afficher dans un format approprié. Voici un exemple d'obtention et d'affichage des résultats en surbrillance :

rrreee

Dans le code ci-dessus, nous utilisons une boucle foreach pour parcourir chaque enregistrement dans les résultats de recherche. Nous imprimons d'abord le titre, puis déterminons si le contenu mis en évidence doit être imprimé en fonction des résultats de la mise en évidence. S'il y a des résultats en surbrillance, utilisez la fonction implode pour fusionner les tableaux de résultats en surbrillance en chaînes ; s'il n'y a pas de résultats en surbrillance, imprimez directement le contenu original.

À ce stade, nous avons implémenté avec succès la mise en évidence de la recherche en texte intégral à l'aide de la bibliothèque PHP Elasticsearch. Vous pouvez améliorer et étendre le code en fonction de vos besoins.

Résumé : cet article explique comment utiliser la bibliothèque PHP Elasticsearch pour mettre en évidence la recherche en texte intégral. Nous parcourons l'ensemble du processus en détail, à travers les étapes de création d'un index, d'ajout de données, de configuration des champs en surbrillance, d'exécution de recherches et d'obtention des résultats en surbrillance. J'espère que cet article vous sera utile et pourra répondre avec succès à vos besoins 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