Heim  >  Artikel  >  Backend-Entwicklung  >  So erstellen Sie eine Autovervollständigungs-Suchfunktion mit PHP und Elasticsearch

So erstellen Sie eine Autovervollständigungs-Suchfunktion mit PHP und Elasticsearch

WBOY
WBOYOriginal
2023-07-17 20:09:071523Durchsuche

So erstellen Sie eine Autovervollständigungs-Suchfunktion mit PHP und Elasticsearch

Titel: So erstellen Sie eine Autovervollständigungs-Suchfunktion mit PHP und Elasticsearch

Einführung:
In modernen Webanwendungen ist die Suchfunktion ein integraler Bestandteil. Es kann die Benutzererfahrung erheblich verbessern und Benutzern helfen, die benötigten Informationen schneller zu finden. Eine gängige Suchfunktion ist die automatische Vervollständigung, die sofort mögliche Suchvorschläge anzeigt, wenn der Benutzer einen Suchbegriff eingibt. In diesem Artikel wird erläutert, wie Sie mit PHP und Elasticsearch eine Suchfunktion mit automatischer Vervollständigung erstellen.

Schritt 1: Elasticsearch installieren und konfigurieren
Zuerst müssen wir Elasticsearch installieren und konfigurieren. Informationen zum Ausführen dieses Schritts finden Sie in der offiziellen Elasticsearch-Dokumentation.

Schritt 2: Erstellen Sie einen Elasticsearch-Index
Als nächstes müssen wir einen Elasticsearch-Index erstellen, um unsere Suchdaten zu speichern. Angenommen, wir möchten eine Suchfunktion zur automatischen Vervollständigung für eine E-Commerce-Website erstellen. Dann können wir einen Index namens „Produkte“ erstellen. Innerhalb dieses Index können wir ein Feld namens „autocomplete“ definieren, um Vorschläge zur automatischen Vervollständigung zu speichern.

Hier ist der Beispielcode zum Erstellen des 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);

Schritt 3: Daten in Elasticsearch importieren
Als nächstes müssen wir unsere Daten in den Elasticsearch-Index importieren. Nehmen wir an, wir haben bereits eine Produktdatendatei mit dem Namen „products.csv“. Wir können die CSV-Bibliothek von PHP verwenden, um die Datei zu lesen und die Daten in Elasticsearch zu importieren.

Hier ist der Beispielcode zum Importieren von Daten:

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

Schritt 4: Implementieren Sie die Autocomplete-Suchfunktion
Da wir nun den Index erstellt und die Daten importiert haben, können wir mit der Implementierung der Autocomplete-Suchfunktion beginnen. Wir können die „match_phrase_prefix“-Abfrage von Elasticsearch verwenden, um diese Funktionalität zu erreichen.

Hier ist der Beispielcode zum Implementieren der Autovervollständigungs-Suchfunktion:

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

Fazit:
In diesem Artikel haben wir vorgestellt, wie man eine Autovervollständigungs-Suchfunktion mit PHP und Elasticsearch erstellt. Durch die Installation und Konfiguration von Elasticsearch, die Erstellung von Indizes und den Import von Daten sowie die Implementierung von Suchfunktionen zur automatischen Vervollständigung können wir Benutzern ermöglichen, die benötigten Informationen schneller zu finden und die Benutzererfahrung zu verbessern. Ich hoffe, dieser Artikel ist hilfreich für Sie!

Das obige ist der detaillierte Inhalt vonSo erstellen Sie eine Autovervollständigungs-Suchfunktion mit PHP und Elasticsearch. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn