Maison  >  Article  >  développement back-end  >  Comment implémenter la recherche multilingue avec PHP et Elasticsearch

Comment implémenter la recherche multilingue avec PHP et Elasticsearch

王林
王林original
2023-07-17 08:12:11786parcourir

Comment mettre en œuvre la recherche multilingue via PHP et Elasticsearch

Dans l'environnement Internet actuel, avec le développement de la mondialisation, la recherche multilingue est devenue l'une des fonctions nécessaires pour de nombreux sites Web. En tant que puissant moteur de recherche open source, Elasticsearch dispose de fonctionnalités de recherche efficaces et flexibles. Cet article présentera comment implémenter la recherche multilingue via PHP et Elasticsearch, avec des exemples de code.

1. Préparation
Avant de commencer, vous devez vous assurer que l'environnement suivant a été installé :

  1. Environnement PHP : Assurez-vous que PHP a été installé et peut fonctionner normalement.
  2. Elasticsearch : assurez-vous qu'Elasticsearch est installé et peut démarrer normalement.

2. Créer un index
Avant d'effectuer une recherche multilingue, vous devez d'abord créer un index approprié et stocker les données correspondantes dans Elasticsearch. Voici un exemple simple :

<?php

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

$hosts = [
    'http://localhost:9200'
];

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

$params = [
    'index' => 'my_index',
    'body'  => [
        'mappings' => [
            'properties' => [
                'title' => [
                    'type' => 'text',
                    'fields' => [
                        'zh' => [
                            'type' => 'text',
                            'analyzer' => 'ik_max_word',
                            'search_analyzer' => 'ik_smart'
                        ],
                        'en' => [
                            'type' => 'text',
                            'analyzer' => 'english',
                            'search_analyzer' => 'english'
                        ]
                    ]
                ],
                'content' => [
                    'type' => 'text',
                    'fields' => [
                        'zh' => [
                            'type' => 'text',
                            'analyzer' => 'ik_max_word',
                            'search_analyzer' => 'ik_smart'
                        ],
                        'en' => [
                            'type' => 'text',
                            'analyzer' => 'english',
                            'search_analyzer' => 'english'
                        ]
                    ]
                ]
            ]
        ]
    ]
];

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

Dans le code ci-dessus, nous utilisons le client PHP d'Elasticsearch pour créer un index nommé my_index, qui contient un titre et un champ de contenu, correspondant respectivement au titre et au contenu de l'article. Deux sous-champs « zh » et « en » sont définis, qui sont utilisés respectivement pour stocker les versions chinoise et anglaise des données, et les analyseurs correspondants sont spécifiés.

3. Insérer des données
Ensuite, nous devons insérer certaines données dans l'index pour les recherches ultérieures. Voici un exemple simple :

<?php

$doc = [
    'title' => [
        'zh' => '中文标题',
        'en' => 'English title'
    ],
    'content' => [
        'zh' => '中文内容',
        'en' => 'English content'
    ]
];

$params = [
    'index' => 'my_index',
    'id'    => '1',
    'body'  => $doc
];

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

Dans le code ci-dessus, nous créons un document avec des titres et du contenu en chinois et en anglais, et l'insérons dans un index nommé mon_index.

4. Recherche
Après avoir terminé l'établissement de l'index et l'insertion des données, nous pouvons lancer la recherche multilingue. Voici un exemple simple :

<?php

$params = [
    'index' => 'my_index',
    'body'  => [
        'query' => [
            'multi_match' => [
                'query' => '关键词',
                'fields' => ['title.zh', 'content.zh', 'title.en', 'content.en']
            ]
        ]
    ]
];

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

var_dump($response['hits']['hits']);

Dans le code ci-dessus, nous utilisons la recherche multilingue multi-champs pour effectuer une recherche en spécifiant les champs et les mots-clés à rechercher. Les résultats de la recherche sont triés par pertinence et les documents correspondants sont renvoyés.

5. Résumé
Il n'est pas compliqué de mettre en œuvre une recherche multilingue via PHP et Elasticsearch. En créant des index et une insertion de données appropriés, combinés à des recherches multilingues et multichamps, nous pouvons mettre en œuvre des capacités de recherche multilingues rapidement et avec précision. J'espère que cet article vous sera utile.

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