Maison > développement back-end > tutoriel php > 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
Libérer: 2023-07-17 20:10:01
original
1538 Les gens l'ont consulté

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);
Copier après la connexion

É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);
Copier après la connexion

É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);
Copier après la connexion

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!

Étiquettes associées:
source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal