Maison  >  Article  >  développement back-end  >  Solution de recherche multilingue implémentée par PHP et Elasticsearch

Solution de recherche multilingue implémentée par PHP et Elasticsearch

PHPz
PHPzoriginal
2023-07-12 20:19:37734parcourir

Solution de recherche multilingue implémentée par PHP et Elasticsearch

Avec le développement rapide de l'Internet mondial, de plus en plus d'applications doivent prendre en charge la recherche multilingue. Dans cet environnement multilingue, la mise en œuvre d'un système de recherche efficace et précis est très importante pour l'expérience utilisateur et l'interrogation des données. Cet article explique comment utiliser PHP et Elasticsearch pour implémenter une solution de recherche multilingue.

1. Pourquoi choisir Elasticsearch ?
Elasticsearch est un moteur de recherche et d'analyse distribué open source. Grâce à sa puissante fonction de recherche en texte intégral et à sa segmentation de mots prenant en charge plusieurs langues, il peut bien répondre aux besoins de recherche multilingue. Par rapport aux bases de données relationnelles traditionnelles, Elasticsearch offre des performances supérieures, une syntaxe de requête plus flexible et une meilleure évolutivité, ce qui la rend très adaptée à la création de moteurs de recherche.

2. Installez et configurez Elasticsearch
Tout d'abord, nous devons installer Elasticsearch sur le serveur et effectuer la configuration de base. Pour les procédures d'installation et de configuration spécifiques, veuillez vous référer à la documentation officielle d'Elasticsearch. Une fois l'installation terminée, nous devons créer un index et définir le mappage correspondant pour prendre en charge la recherche multilingue.

3. Créer des index et des mappages
Dans Elasticsearch, les index sont similaires aux tables des bases de données relationnelles et sont utilisés pour stocker et indexer les données. Nous pouvons créer des index et définir les mappages correspondants en envoyant des requêtes HTTP. Voici un exemple simple :

PUT /my_index
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "fields": {
          "english": {
            "type": "text",
            "analyzer": "english"
          },
          "chinese": {
            "type": "text",
            "analyzer": "ik_max_word"
          }
        }
      },
      "content": {
        "type": "text",
        "fields": {
          "english": {
            "type": "text",
            "analyzer": "english"
          },
          "chinese": {
            "type": "text",
            "analyzer": "ik_max_word"
          }
        }
      }
    }
  }
}

Dans l'exemple ci-dessus, nous avons créé un index nommé "my_index" et défini deux champs "title" et "content". Chaque champ comporte deux sous-champs « anglais » et « chinois », qui sont utilisés respectivement pour stocker les résultats de segmentation des mots anglais et chinois. Le champ anglais utilise le segmenteur de mots anglais intégré d'Elasticsearch, et le champ chinois utilise le segmenteur de mots chinois ik_max_word.

4. Opérations de recherche en PHP
En PHP, nous pouvons utiliser la bibliothèque client officielle fournie par Elasticsearch pour effectuer des opérations de recherche. Tout d’abord, nous devons installer le package elasticsearch/elasticsearch. Vous pouvez utiliser Composer pour terminer l'installation, exécutez simplement le nom suivant :

composer require elasticsearch/elasticsearch

Ensuite, nous devons introduire le package elasticsearch et établir une connexion :

require 'vendor/autoload.php';

$client = new ElasticsearchClient([
    'hosts' => ['localhost:9200']
]);

Après avoir établi la connexion, nous pouvons commencer à effectuer des opérations de recherche. Voici un exemple simple de code de recherche PHP :

$params = [
    'index' => 'my_index',
    'type' => '_doc',
    'body' => [
        'query' => [
            'multi_match' => [
                'query' => 'keyword',
                'fields' => ['title.english', 'content.english', 'title.chinese', 'content.chinese']
            ]
        ]
    ]
];

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

Dans l'exemple ci-dessus, nous construisons un corps de requête contenant le mot-clé de requête et le champ de recherche, puis utilisons la méthode de recherche du client Elasticsearch pour effectuer l'opération de recherche. Les résultats de la recherche seront stockés dans la variable $response.

5. Analyse et affichage des résultats
La dernière étape consiste à analyser les résultats de la recherche et à les afficher à l'utilisateur. Le résultat de la recherche d'Elasticsearch est une structure de données contenant plusieurs documents. Nous devons parcourir ces documents, les analyser et les afficher selon nos besoins.

Voici un exemple de code simple :

foreach ($response['hits']['hits'] as $hit) {
    $title = $hit['_source']['title'];
    $content = $hit['_source']['content'];

    // 在这里进行结果展示或其他操作
}

Dans l'exemple ci-dessus, nous parcourons chaque document dans les résultats de recherche et en obtenons le titre et le contenu. Vous pouvez afficher, trier ou effectuer d'autres opérations sur les résultats en fonction des besoins réels.

6. Résumé
L'utilisation de PHP et d'Elasticsearch pour mettre en œuvre des solutions de recherche multilingues peut considérablement améliorer l'expérience utilisateur et fournir des résultats de recherche précis. Grâce à un mappage d'index raisonnable et à l'utilisation de puissantes fonctions de recherche fournies par Elasticsearch, nous pouvons créer un système de recherche multilingue hautes performances. J'espère que le contenu de cet article pourra vous être utile et je vous souhaite de créer un excellent système de recherche multilingue !

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