Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk membina fungsi carian autolengkap menggunakan PHP dan Elasticsearch

Bagaimana untuk membina fungsi carian autolengkap menggunakan PHP dan Elasticsearch

WBOY
Lepaskan: 2023-07-17 20:10:01
asal
1538 orang telah melayarinya

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);
Salin selepas log masuk

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);
Salin selepas log masuk

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);
Salin selepas log masuk

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!

Label berkaitan:
sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan