Maison  >  Article  >  développement back-end  >  Comment créer une fonction de recherche de saisie semi-automatique à l'aide de PHP et Elasticsearch

Comment créer une fonction de recherche de saisie semi-automatique à l'aide de PHP et Elasticsearch

WBOY
WBOYoriginal
2023-07-17 20:09:071527parcourir

Comment créer une fonction de recherche à saisie semi-automatique à l'aide de PHP et Elasticsearch

Titre : Comment créer une fonction de recherche à saisie semi-automatique à l'aide de PHP et Elasticsearch

Introduction :
Dans les applications Web modernes, la fonctionnalité de recherche fait partie intégrante. Cela peut considérablement améliorer l’expérience utilisateur et aider les utilisateurs à trouver plus rapidement les informations dont ils ont besoin. Une fonctionnalité de recherche courante est la saisie semi-automatique, qui affiche instantanément les suggestions de recherche possibles lorsque l'utilisateur saisit un terme de recherche. Cet article explique comment utiliser PHP et Elasticsearch pour créer une fonction de recherche à saisie semi-automatique.

Étape 1 : Installer et configurer Elasticsearch
Tout d'abord, nous devons installer et configurer Elasticsearch. Vous pouvez vous référer à la documentation officielle d'Elasticsearch pour terminer cette étape.

Étape 2 : Créer un index Elasticsearch
Ensuite, nous devons créer un index Elasticsearch pour stocker nos données de recherche. Supposons que nous souhaitions créer une fonction de recherche à saisie semi-automatique pour un site Web de commerce électronique, nous pouvons créer un index appelé « produits ». Au sein de cet index, nous pouvons définir un champ appelé « autocomplete » pour stocker les suggestions de saisie semi-automatique.

Voici l'exemple de code pour créer l'index :

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

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

$params = [
    'index' => 'products',
    'body' => [
        'mappings' => [
            'properties' => [
                'autocomplete' => [
                    'type' => 'text',
                    'analyzer' => 'autocomplete',
                    'search_analyzer' => 'standard',
                ]
            ]
        ],
        'settings' => [
            'analysis' => [
                'analyzer' => [
                    'autocomplete' => [
                        'type' => 'custom',
                        'tokenizer' => 'standard',
                        'filter' => ['lowercase', 'autocomplete_filter'],
                    ],
                ],
                'filter' => [
                    'autocomplete_filter' => [
                        'type' => 'edge_ngram',
                        'min_gram' => 1,
                        'max_gram' => 20,
                    ],
                ],
            ],
        ],
    ],
];

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

Étape 3 : Importer des données dans Elasticsearch
Ensuite, nous devons importer nos données dans l'index Elasticsearch. Supposons que nous disposions déjà d'un fichier de données produit appelé "products.csv". Nous pouvons utiliser la bibliothèque CSV de PHP pour lire le fichier et importer les données dans Elasticsearch.

Voici un exemple de code pour importer des données :

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

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

$csvFile = fopen('products.csv', 'r');

while (($data = fgetcsv($csvFile, 1000, ',')) !== false) {
    $params = [
        'index' => 'products',
        'body' => [
            'autocomplete' => $data[1],
        ],
    ];

    $client->index($params);
}

fclose($csvFile);

Étape 4 : Implémenter la fonction de recherche de saisie semi-automatique
Maintenant que nous avons créé l'index et importé les données, nous pouvons commencer à implémenter la fonction de recherche de saisie semi-automatique. Nous pouvons utiliser la requête "match_phrase_prefix" d'Elasticsearch pour obtenir cette fonctionnalité.

Voici un exemple de code pour implémenter la fonction de recherche de saisie semi-automatique :

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

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

$params = [
    'index' => 'products',
    'body' => [
        'query' => [
            'match_phrase_prefix' => [
                'autocomplete' => [
                    'query' => $_GET['term']
                ]
            ],
        ],
    ],
];

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

$suggestions = [];

foreach ($response['hits']['hits'] as $hit) {
    $suggestions[] = $hit['_source']['autocomplete'];
}

echo json_encode($suggestions);

Conclusion :
Dans cet article, nous avons présenté comment créer une fonction de recherche de saisie semi-automatique à l'aide de PHP et Elasticsearch. En installant et en configurant Elasticsearch, en créant des index et en important des données, ainsi qu'en mettant en œuvre des fonctionnalités de recherche à saisie semi-automatique, nous pouvons permettre aux utilisateurs de trouver plus rapidement les informations dont ils ont besoin et d'améliorer leur expérience utilisateur. 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