Cara membina fungsi carian autolengkap menggunakan PHP dan Elasticsearch
Tajuk: Cara membina fungsi carian autolengkap menggunakan PHP dan Elasticsearch
Pengenalan:
Dalam aplikasi web moden, fungsi carian adalah bahagian yang penting. Ia boleh meningkatkan pengalaman pengguna dan membantu pengguna mencari maklumat yang mereka perlukan dengan lebih cepat. Satu ciri carian biasa ialah autolengkap, yang dengan serta-merta memaparkan kemungkinan cadangan carian apabila pengguna memasukkan istilah carian. Artikel ini akan memperkenalkan cara menggunakan PHP dan Elasticsearch untuk membina fungsi carian autolengkap.
Langkah 1: Pasang dan konfigurasikan Elasticsearch
Mula-mula, kita perlu memasang dan mengkonfigurasi Elasticsearch. Anda boleh merujuk kepada dokumentasi rasmi Elasticsearch untuk melengkapkan langkah ini.
Langkah 2: Buat indeks Elasticsearch
Seterusnya, kita perlu mencipta indeks Elasticsearch untuk menyimpan data carian kami. Katakan kita ingin membina fungsi carian autolengkap untuk tapak web e-dagang, kita boleh mencipta indeks yang dipanggil "produk". Dalam indeks ini, kita boleh menentukan medan yang dipanggil "autolengkap" untuk menyimpan cadangan autolengkap.
Berikut ialah contoh kod untuk mencipta indeks:
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);
Langkah 3: Import data ke dalam Elasticsearch
Seterusnya, kami perlu mengimport data kami ke dalam indeks Elasticsearch. Katakan kita sudah mempunyai fail data produk bernama "products.csv". Kita boleh menggunakan perpustakaan CSV PHP untuk membaca fail dan mengimport data ke dalam Elasticsearch.
Berikut ialah contoh kod untuk mengimport data:
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);
Langkah 4: Laksanakan fungsi carian autolengkap
Sekarang kami telah mencipta indeks dan mengimport data, kami boleh mula melaksanakan fungsi carian autolengkap. Kami boleh menggunakan pertanyaan "match_phrase_prefix" Elasticsearch untuk mencapai fungsi ini.
Berikut ialah contoh kod untuk melaksanakan fungsi carian autolengkap:
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);
Kesimpulan:
Dalam artikel ini, kami memperkenalkan cara membina fungsi carian autolengkap menggunakan PHP dan Elasticsearch. Dengan memasang dan mengkonfigurasi Elasticsearch, mencipta indeks dan mengimport data, dan melaksanakan keupayaan carian autolengkap, kami boleh membenarkan pengguna mencari maklumat yang mereka perlukan dengan lebih pantas dan meningkatkan pengalaman pengguna. Harap artikel ini membantu anda!
Atas ialah kandungan terperinci Bagaimana untuk membina fungsi carian autolengkap menggunakan PHP dan Elasticsearch. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!