Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk melaksanakan keperluan carian yang kompleks melalui PHP dan Elasticsearch

Bagaimana untuk melaksanakan keperluan carian yang kompleks melalui PHP dan Elasticsearch

PHPz
PHPzasal
2023-07-17 08:37:21897semak imbas

Cara melaksanakan keperluan carian yang kompleks melalui PHP dan Elasticsearch

Dalam laman web dan aplikasi moden, fungsi carian telah menjadi bahagian penting dalam pengalaman pengguna. Untuk memenuhi jangkaan pengguna untuk pelbagai keperluan carian yang kompleks, pembangun perlu menggunakan alat dan teknik yang berkuasa untuk membina sistem carian yang cekap. PHP ialah bahasa pengaturcaraan sebelah pelayan yang biasa digunakan, manakala Elasticsearch ialah enjin carian sumber terbuka yang digunakan secara meluas untuk carian dan analitik. Artikel ini akan memperkenalkan cara melaksanakan keperluan carian yang kompleks melalui PHP dan Elasticsearch.

1. Pasang dan konfigurasikan Elasticsearch

Pertama, kita perlu memasang dan mengkonfigurasi Elasticsearch pada pelayan. Sila rujuk dokumentasi rasmi Elasticsearch untuk langkah pemasangan terperinci. Selepas pemasangan selesai, pastikan pelayan Elasticsearch sedang berjalan dan anda boleh mengesahkan bahawa pemasangan itu berjaya dengan mengakses alamat IP pelayan serta port lalai Elasticsearch 9200.

2. Gunakan PHP untuk menyambung ke Elasticsearch

Langkah seterusnya ialah menyambung ke pelayan Elasticsearch dalam kod PHP. Anda boleh menggunakan perpustakaan klien PHP yang disediakan secara rasmi oleh Elasticsearch, atau perpustakaan pihak ketiga yang lain, seperti "elasticsearch/elasticsearch". Perpustakaan ini menyediakan antara muka yang mudah tetapi berkuasa untuk berinteraksi dengan Elasticsearch.

Pertama, kita perlu memperkenalkan perpustakaan klien Elasticsearch ke dalam projek:

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

Kemudian, kita boleh menggunakan kod berikut untuk menyambung ke pelayan Elasticsearch:

$client = ClientBuilder::create()->setHosts(['localhost:9200'])->build();

Contoh ini menganggap bahawa pelayan Elasticsearch sedang berjalan secara tempatan dan menggunakan port lalai. Jika pelayan Elasticsearch terletak di tempat lain atau menggunakan port lain, tukar kod tersebut dengan sewajarnya.

3. Buat indeks dan masukkan data

Sebelum melakukan carian, kita perlu membuat indeks dan memasukkan data ke dalam indeks ini. Indeks ialah cara logik untuk menyusun data, sama seperti jadual dalam pangkalan data. Dalam Elasticsearch, setiap dokumen dalam indeks mempunyai pengecam unik dan boleh dicari dan diambil berdasarkan pengecam.

Untuk mencipta indeks, gunakan kod berikut:

$params = [
    'index' => 'my_index',
    'body' => [
        'settings' => [
            'number_of_shards' => 5,
            'number_of_replicas' => 1
        ]
    ]
];

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

Dalam contoh ini, kami mencipta indeks bernama "my_index" dan menentukan beberapa tetapan, seperti bilangan serpihan dan replika. Tetapan ini boleh dilaraskan mengikut keperluan khusus.

Seterusnya, kita boleh masukkan data ke dalam indeks. Mengambil artikel sebagai contoh, contoh kod adalah seperti berikut:

$params = [
    'index' => 'my_index',
    'body' => [
        'title' => 'How to use PHP and Elasticsearch for complex search requirements',
        'content' => 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. ...',
        'tags' => ['PHP', 'Elasticsearch', 'search']
    ]
];

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

Dalam contoh ini, kami memasukkan tajuk, kandungan dan tag artikel ke dalam indeks. Medan dan struktur data indeks boleh ditakrifkan mengikut keperluan khusus.

4. Lakukan operasi carian

Sekarang kami telah mencipta indeks dan memasukkan data, langkah seterusnya ialah melakukan operasi carian. Elasticsearch menyediakan fungsi carian yang kaya, termasuk carian teks penuh, carian julat, carian kabur, pengagregatan, dsb.

Berikut ialah contoh kod untuk melakukan carian teks penuh asas:

$params = [
    'index' => 'my_index',
    'body' => [
        'query' => [
            'match' => [
                'title' => 'PHP Elasticsearch'
            ]
        ]
    ]
];

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

Dalam contoh ini, kami melakukan carian dengan menanyakan dokumen yang tajuknya mengandungi kata kunci "PHP Elasticsearch". Syarat pertanyaan boleh diselaraskan mengikut keperluan khusus.

Selain carian teks penuh, Elasticsearch juga menyokong pelbagai jenis carian lain, seperti carian julat, carian kabur, pengagregatan, dsb. Untuk butiran lanjut tentang fungsi carian dan penggunaan, sila rujuk kepada dokumentasi rasmi Elasticsearch.

5 Proses hasil carian

Akhir sekali, kami perlu memproses hasil carian dan membentangkannya kepada pengguna. Hasil carian biasanya merupakan senarai dokumen yang sepadan, setiap satu mengandungi maklumat yang berkaitan seperti tajuk, kandungan, tag, dsb. Kami boleh menggunakan PHP untuk memproses dan membentangkan hasil ini.

Berikut ialah contoh kod untuk memproses hasil carian:

foreach ($response['hits']['hits'] as $hit) {
    $doc = $hit['_source'];
    echo $doc['title'] . '<br>';
    echo $doc['content'] . '<br>';
    echo implode(', ', $doc['tags']) . '<br>';
    echo '<hr>';
}

Dalam contoh ini, kami memproses dan memaparkan hasil carian dengan menggelung hasil carian dan membaca medan setiap dokumen. Bergantung pada keperluan khusus, kod boleh dilaraskan untuk melaksanakan logik pemprosesan yang lebih kompleks.

Ringkasan:

Melalui PHP dan Elasticsearch, kami boleh melaksanakan pelbagai keperluan carian yang kompleks dengan mudah. Pertama, kita perlu memasang dan mengkonfigurasi pelayan Elasticsearch dan menyambung ke pelayan menggunakan PHP. Kemudian, kami membuat indeks dan memasukkan data ke dalam indeks. Akhir sekali, kami boleh melakukan operasi carian dan memproses hasil carian.

Saya harap artikel ini dapat membantu anda memahami dan melaksanakan keperluan carian yang kompleks. Jika anda berminat dengan lebih banyak penggunaan dan fungsi Elasticsearch, sila rujuk dokumentasi rasmi Elasticsearch dan bahan berkaitan.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan keperluan carian yang kompleks melalui PHP dan Elasticsearch. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
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