Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk membina enjin carian berskala besar dengan PHP dan Elasticsearch

Bagaimana untuk membina enjin carian berskala besar dengan PHP dan Elasticsearch

WBOY
WBOYasal
2023-07-17 09:37:14952semak imbas

Cara membina enjin carian berskala besar melalui PHP dan Elasticsearch

Pengenalan:
Dalam era data besar hari ini, membina enjin carian berskala besar yang cekap adalah penting untuk pelbagai aplikasi Internet. Elasticsearch ialah enjin carian teragih sumber terbuka dengan kelajuan tinggi, kebolehpercayaan tinggi dan keupayaan carian berkuasa. Menggabungkan PHP dan Elasticsearch, kami boleh membina enjin carian berskala besar yang cekap. Artikel ini akan memperkenalkan cara menggunakan PHP dan Elasticsearch untuk pembangunan enjin carian dan menyediakan beberapa kod sampel.

1. Pasang dan konfigurasikan Elasticsearch
Pertama, kita perlu memasang dan mengkonfigurasi Elasticsearch untuk menyediakan persekitaran pembangunan. Langkah-langkah khusus adalah seperti berikut:

  1. Muat turun versi terkini Elasticsearch dan ekstrak ke direktori yang ditentukan.
  2. Jalankan Elasticsearch dan mulakan perkhidmatan.
  3. Konfigurasikan Elasticsearch, terutamanya termasuk nama nod dan kelompok, laluan storan data, alamat mengikat rangkaian, dsb.

2 Gunakan PHP untuk menyambung ke Elasticsearch
Untuk menggunakan PHP untuk menyambung ke Elasticsearch, kami perlu memasang sambungan elasticsearch-php dan memperkenalkan perpustakaan yang berkaitan ke dalam kod PHP. Langkah-langkah khusus adalah seperti berikut:

  1. Pasang sambungan elasticsearch-php. Ia boleh dipasang melalui alat komposer, jalankan arahan berikut:
    composer memerlukan elasticsearch/elasticsearch
  2. Perkenalkan perpustakaan elasticsearch-php ke dalam kod PHP, gunakan kod berikut:
    memerlukan 'vendor/autoload.php'
    ; ElasticsearchClientBuilder;

3. Indeks data ke dalam Elasticsearch
Sebelum menggunakan Elasticsearch untuk mencari, kita perlu mengindeks data ke dalam Elasticsearch terlebih dahulu. Berikut ialah contoh kod yang menunjukkan cara mengindeks data ke dalam Elasticsearch:

$client = ClientBuilder::create()->build();

$params = [
    'index' => 'my_index',
    'type' => 'my_type',
    'id' => 'my_id',
    'body' => ['name' => 'John Doe', 'age' => 25, 'city' => 'New York']
];

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

Kod di atas memasukkan dokumen ke dalam indeks my_index Elasticsearch Jenis dokumen ialah my_type, id dokumen ialah my_id, dan kandungan dokumen termasuk nama, umur, dan bandar.

4. Cari data
Selepas pengindeksan data selesai, kita boleh menggunakan Elasticsearch untuk mencari. Berikut ialah contoh kod yang menunjukkan cara mencari menggunakan PHP dan Elasticsearch:

$client = ClientBuilder::create()->build();

$params = [
    'index' => 'my_index',
    'type' => 'my_type',
    'body' => [
        'query' => [
            'match' => ['name' => 'John']
        ]
    ]
];

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

Kod di atas mencari semua dokumen yang mengandungi nama John dalam indeks my_index, dan hasil carian akan disimpan dalam pembolehubah $response.

5. Paparan hasil carian
Hasil carian biasanya perlu dipaparkan kepada pengguna Kami boleh menggunakan PHP untuk memproses dan memaparkan hasil carian. Berikut ialah contoh kod yang menunjukkan cara memaparkan hasil carian:

foreach ($response['hits']['hits'] as $hit) {
    echo "姓名:" . $hit['_source']['name'] . "
";
    echo "年龄:" . $hit['_source']['age'] . "
";
    echo "城市:" . $hit['_source']['city'] . "
";
    echo "
";
}

Kod di atas akan memaparkan nama, umur dan bandar dalam hasil carian.

6 Carian lanjutan dan pemprosesan data
Elasticsearch menyediakan fungsi carian yang kaya dan keupayaan pemprosesan data Kami boleh mencapai carian yang lebih tepat melalui beberapa parameter dan arahan, serta memproses dan menganalisis hasil carian. Berikut ialah beberapa contoh kod yang menunjukkan cara menggunakan beberapa ciri lanjutan:

// 多字段搜索
$params = [
    'index' => 'my_index',
    'type' => 'my_type',
    'body' => [
        'query' => [
            'multi_match' => [
                'query' => 'John',
                'fields' => ['name', 'city']
            ]
        ]
    ]
];

// 聚合查询
$params = [
    'index' => 'my_index',
    'type' => 'my_type',
    'body' => [
        'aggs' => [
            'avg_age' => [
                'avg' => ['field' => 'age']
            ]
        ]
    ]
];

Kod di atas menunjukkan penggunaan carian berbilang medan dan pertanyaan agregat masing-masing.

Kesimpulan:
Artikel ini menerangkan cara membina enjin carian berskala besar dengan PHP dan Elasticsearch, dan menyediakan beberapa kod sampel untuk menunjukkan keupayaan pengindeksan dan carian asas. Dengan pemahaman yang mendalam dan penggunaan fleksibel ciri lanjutan Elasticsearch, kami boleh membina enjin carian yang lebih berkuasa dan lebih pintar. Saya harap artikel ini akan membantu semua orang apabila membangunkan enjin carian. Semoga berjaya!

Atas ialah kandungan terperinci Bagaimana untuk membina enjin carian berskala besar dengan 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