Maison  >  Article  >  développement back-end  >  Comment implémenter rapidement la recherche en texte intégral avec PHP et Elasticsearch

Comment implémenter rapidement la recherche en texte intégral avec PHP et Elasticsearch

WBOY
WBOYoriginal
2023-07-17 17:17:301070parcourir

Comment implémenter rapidement la recherche en texte intégral avec PHP et Elasticsearch

La recherche en texte intégral devient de plus en plus importante dans les applications modernes, elle peut aider les utilisateurs à trouver rapidement les informations dont ils ont besoin. Elasticsearch est un puissant moteur de recherche open source qui offre des fonctionnalités de recherche en texte intégral rapides et efficaces. En combinant la puissance de PHP avec la flexibilité d'Elasticsearch, nous pouvons facilement implémenter une fonctionnalité de recherche en texte intégral.

Cet article vous montrera comment implémenter rapidement la fonctionnalité de recherche en texte intégral à l'aide de PHP et Elasticsearch, et fournira quelques exemples de code simples.

  1. Installer et configurer Elasticsearch

Tout d'abord, nous devons installer et configurer Elasticsearch. Vous pouvez télécharger et installer la dernière version depuis le site officiel d'Elasticsearch (https://www.elastic.co/). Une fois installé, vous devez configurer Elasticsearch pour communiquer avec PHP. Dans le fichier de configuration d'Elasticsearch, définissez la valeur de l'option suivante pour autoriser l'accès à distance :

network.host: 0.0.0.0

Enregistrez le fichier de configuration et démarrez Elasticsearch.

  1. Connectez-vous à Elasticsearch en utilisant PHP

Ensuite, nous devons nous connecter à Elasticsearch en utilisant PHP. PHP fournit une puissante bibliothèque client Elasticsearch appelée Elasticsearch-PHP (https://github.com/elastic/elasticsearch-php), que nous pouvons utiliser pour interagir avec Elasticsearch.

Vous pouvez utiliser Composer pour installer la bibliothèque Elasticsearch-PHP. Basculez vers le répertoire de votre projet PHP sur la ligne de commande et exécutez la commande suivante :

composer require elasticsearch/elasticsearch

Une fois l'installation terminée, vous pouvez utiliser le code suivant dans votre fichier PHP pour vous connecter à Elasticsearch :

require 'vendor/autoload.php';

$client = ElasticsearchClientBuilder::create()->setHosts(['http://localhost:9200'])->build();

Cet extrait de code utilisera le code par défaut localhost : 9200 est utilisé comme hôte et numéro de port d'Elasticsearch.

  1. Créer un index

Avant la recherche en texte intégral, nous devons stocker les données dans l'index d'Elasticsearch. L'index est l'endroit qu'Elasticsearch utilise pour stocker et rechercher des documents.

Voici un exemple simple pour stocker des données dans un index dans Elasticsearch :

$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);

Dans l'exemple ci-dessus, nous définissons d'abord un index appelé my_index, puis définissons les attributs de deux champs du document ( title et content), et précisez le type de données du champ (texte). my_index的索引,然后定义了文档中两个字段的属性(titlecontent),并指定了字段的数据类型(text)。

  1. 向索引中添加文档

在有了索引之后,我们可以将文档添加到索引中。文档是Elasticsearch的基本单位,它包含我们要搜索的内容。

下面是向索引中添加文档的一个简单示例:

$params = [
    'index' => 'my_index',
    'body' => [
        'title' => 'Example Document',
        'content' => 'This is an example document for testing purposes',
    ],
];
$response = $client->index($params);

在上面的示例中,我们定义了一个名为my_index的索引,并在索引中添加了一个名为Example Document的文档,其中包含一些内容。

  1. 执行全文搜索

现在,我们已经创建了一个索引并添加了一些文档,我们可以开始执行全文搜索了。

以下是一个简单的示例,展示了如何使用Elasticsearch进行全文搜索:

$params = [
    'index' => 'my_index',
    'body' => [
        'query' => [
            'match' => [
                'content' => 'example',
            ],
        ],
    ],
];
$response = $client->search($params);

在上面的示例中,我们定义了一个匹配查询,它将搜索content字段中包含关键词example

    Ajouter des documents à l'index
    1. Après avoir l'index, nous pouvons ajouter des documents à l'index. Un document est l'unité de base d'Elasticsearch et contient le contenu que nous recherchons.

    Voici un exemple simple d'ajout de documents à l'index :

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

    Dans l'exemple ci-dessus, nous avons défini un index nommé mon_index et ajouté un nouveau document nommé Exemple de document Le document de, qui contient du contenu.

      Effectuer une recherche en texte intégral

      Maintenant que nous avons créé un index et ajouté quelques documents, nous pouvons commencer à effectuer une recherche en texte intégral. 🎜🎜Voici un exemple simple montrant comment utiliser Elasticsearch pour la recherche en texte intégral : 🎜rrreee🎜Dans l'exemple ci-dessus, nous avons défini une requête de correspondance qui recherchera les mots-clés contenus dans le champ content. par exemple. 🎜🎜🎜Traitement des résultats de recherche🎜🎜🎜Enfin, nous devons traiter les résultats de la recherche et les afficher sur l'interface utilisateur. Voici un exemple simple montrant comment traiter les résultats de la recherche : 🎜rrreee🎜 Dans l'exemple ci-dessus, nous parcourons chaque document dans les résultats de la recherche et affichons le titre et le contenu. 🎜🎜Résumé🎜🎜En utilisant PHP et Elasticsearch, nous pouvons facilement implémenter une fonctionnalité de recherche en texte intégral. Cet article fournit un exemple simple montrant comment se connecter à Elasticsearch, créer un index, ajouter des documents, effectuer une recherche en texte intégral et traiter les résultats de la recherche. En utilisant ces bases, vous pouvez créer des applications de recherche en texte intégral plus puissantes et plus complexes. J'espère que cet article vous aidera ! 🎜

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