Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Paparan hasil carian dan teknologi penyesuaian berdasarkan Elasticsearch dalam PHP

Paparan hasil carian dan teknologi penyesuaian berdasarkan Elasticsearch dalam PHP

WBOY
WBOYasal
2023-10-03 09:00:401194semak imbas

PHP 中基于 Elasticsearch 的搜索结果展示与定制技术

Paparan hasil carian dan teknologi penyesuaian berdasarkan Elasticsearch dalam PHP

Pengenalan:
Dalam era Internet moden, fungsi carian adalah bahagian penting dalam laman web dan aplikasi. Cara cepat dan tepat memaparkan hasil yang pengguna inginkan melalui enjin carian sentiasa menjadi cabaran yang dihadapi oleh pembangun. Elasticsearch ialah enjin carian teks penuh yang diedarkan sumber terbuka yang popular secara meluas dalam kalangan pembangun kerana keupayaan carian dan analisisnya yang berprestasi tinggi. Artikel ini akan memperkenalkan paparan hasil carian berasaskan Elasticsearch dan teknologi penyesuaian dalam PHP, dan memberikan contoh kod khusus.

1. Pemasangan dan konfigurasi Elasticsearch

Pertama, kita perlu memasang dan memulakan Elasticsearch. Anda boleh memuat turun versi stabil terkini dari laman web rasmi Elasticsearch (https://www.elastic.co/), dan pasang serta konfigurasikannya mengikut dokumentasi rasmi.

2. Pustaka pelanggan Elasticsearch PHP

Dalam PHP, kami boleh menggunakan perpustakaan pelanggan Elasticsearch yang disediakan secara rasmi untuk berinteraksi dengan Elasticsearch. Anda boleh menggunakan Komposer untuk memasang:

composer require elasticsearch/elasticsearch

Selepas pemasangan selesai, anda boleh memperkenalkan perpustakaan klien Elasticsearch ke dalam projek:

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

3. Buat indeks dan dokumen

Sebelum memulakan carian, kita perlu mencipta indeks dan tambahkan beberapa dokumen ke tengah Elasticsearch. Berikut ialah contoh kod PHP:

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

$params = [
    'index' => 'my_index',
    'body' => [
        'settings' => [
            'number_of_shards' => 1,
            'number_of_replicas' => 0
        ],
        'mappings' => [
            'properties' => [
                'title' => [
                    'type' => 'text'
                ],
                'content' => [
                    'type' => 'text'
                ]
            ]
        ]
    ]
];

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

$params = [
    'index' => 'my_index',
    'body' => [
        [
            'index' => [
                '_index' => 'my_index',
                '_id' => '1'
            ]
        ],
        [
            'title' => 'PHP Elasticsearch 搜索实战',
            'content' => '在 PHP 中使用 Elasticsearch 进行高效的搜索技术实战。'
        ],
        [
            'index' => [
                '_index' => 'my_index',
                '_id' => '2'
            ]
        ],
        [
            'title' => 'Elasticsearch 基础教程',
            'content' => '学习使用 Elasticsearch 基础教程,从入门到精通。'
        ],
    ]
];

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

IV Cari dan Paparan

Seterusnya, kami akan menunjukkan cara menggunakan Elasticsearch dalam PHP untuk mencari dan memaparkan keputusan kepada pengguna. Berikut ialah contoh kod PHP:

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

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

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

foreach ($response['hits']['hits'] as $hit) {
    echo $hit['_source']['title'] . '<br>';
    echo $hit['_source']['content'] . '<br><br>';
}

Kod di atas akan mencari dokumen yang diindeks ke dalam my_index yang mengandungi Elasticsearch dalam tajuk, dan mencetak hasilnya. my_index 中标题中包含 Elasticsearch 的文档,并将结果打印出来。

五、搜索结果定制化

除了简单的搜索和展示,我们还可以对搜索结果进行定制化处理。以下是一个定制化处理搜索结果的示例代码:

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

$params = [
    'index' => 'my_index',
    'body' => [
        'query' => [
            'match' => [
                'title' => 'Elasticsearch'
            ]
        ],
        'highlight' => [
            'pre_tags' => '<strong>',
            'post_tags' => '</strong>',
            'fields' => [
                'title' => new stdClass(),
                'content' => new stdClass()
            ]
        ]
    ]
];

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

foreach ($response['hits']['hits'] as $hit) {
    $title = isset($hit['highlight']['title']) ? implode(' ', $hit['highlight']['title']) : $hit['_source']['title'];
    $content = isset($hit['highlight']['content']) ? implode(' ', $hit['highlight']['content']) : $hit['_source']['content'];

    echo $title . '<br>';
    echo $content . '<br><br>';
}

以上代码将引入高亮的功能,将搜索到的结果中匹配的关键词用 8e99a69fbe029cd4e2b854e244eab143

5. Penyesuaian hasil carian


Selain carian dan paparan mudah, kami juga boleh menyesuaikan hasil carian. Berikut ialah contoh kod untuk pemprosesan hasil carian tersuai:

rrreee🎜Kod di atas akan memperkenalkan fungsi penyerlahan dan menandakan kata kunci yang sepadan dalam hasil carian dengan teg 8e99a69fbe029cd4e2b854e244eab143. 🎜🎜Kesimpulan: 🎜Dengan menggunakan Elasticsearch dan perpustakaan klien PHP, kami boleh melaksanakan fungsi carian dalam PHP dengan pantas dan menyesuaikan hasil carian. Saya harap kandungan artikel ini akan membantu anda menggunakan Elasticsearch dalam PHP untuk memaparkan dan menyesuaikan hasil carian. 🎜

Atas ialah kandungan terperinci Paparan hasil carian dan teknologi penyesuaian berdasarkan Elasticsearch dalam PHP. 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