Rumah >pembangunan bahagian belakang >tutorial php >Cara cepat melaksanakan carian teks penuh dengan PHP dan Elasticsearch

Cara cepat melaksanakan carian teks penuh dengan PHP dan Elasticsearch

WBOY
WBOYasal
2023-07-17 17:17:301120semak imbas

Cara cepat melaksanakan carian teks penuh dengan PHP dan Elasticsearch

Carian teks penuh menjadi semakin penting dalam aplikasi moden, ia boleh membantu pengguna mencari maklumat yang mereka perlukan dengan cepat. Elasticsearch ialah enjin carian sumber terbuka yang berkuasa yang menyediakan keupayaan carian teks penuh yang pantas dan cekap. Menggabungkan kuasa PHP dengan fleksibiliti Elasticsearch, kami boleh melaksanakan fungsi carian teks penuh dengan mudah.

Artikel ini akan menunjukkan kepada anda cara melaksanakan fungsi carian teks penuh dengan cepat menggunakan PHP dan Elasticsearch, dan memberikan beberapa contoh kod mudah.

  1. Pasang dan konfigurasikan Elasticsearch

Mula-mula, kita perlu memasang dan mengkonfigurasi Elasticsearch. Anda boleh memuat turun dan memasang versi terkini daripada laman web rasmi Elasticsearch (https://www.elastic.co/). Setelah dipasang, anda perlu mengkonfigurasi Elasticsearch untuk berkomunikasi dengan PHP. Dalam fail konfigurasi Elasticsearch, tetapkan nilai pilihan berikut untuk membenarkan akses jauh:

network.host: 0.0.0.0

Simpan fail konfigurasi dan mulakan Elasticsearch.

  1. Sambung ke Elasticsearch menggunakan PHP

Seterusnya, kita perlu menyambung ke Elasticsearch menggunakan PHP. PHP menyediakan perpustakaan pelanggan Elasticsearch yang berkuasa dipanggil Elasticsearch-PHP (https://github.com/elastic/elasticsearch-php), yang boleh kami gunakan untuk berinteraksi dengan Elasticsearch.

Anda boleh menggunakan Komposer untuk memasang perpustakaan Elasticsearch-PHP. Tukar ke direktori projek PHP anda pada baris arahan dan laksanakan arahan berikut:

composer require elasticsearch/elasticsearch

Setelah pemasangan selesai, anda boleh menggunakan kod berikut dalam fail PHP anda untuk menyambung ke Elasticsearch:

require 'vendor/autoload.php';

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

Coretan kod ini akan menggunakan lalai localhost: 9200 digunakan sebagai hos dan nombor port Elasticsearch.

  1. Buat Indeks

Sebelum carian teks penuh, kita perlu menyimpan data ke dalam indeks Elasticsearch. Indeks adalah tempat Elasticsearch menggunakan untuk menyimpan dan mencari dokumen.

Berikut ialah contoh mudah untuk menyimpan data ke dalam indeks dalam Elasticsearch:

$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);

Dalam contoh di atas, kami mula-mula mentakrifkan indeks yang dipanggil my_index dan kemudian menentukan Atribut dua medan dalam dokumen ( title dan content), dan tentukan jenis data medan (teks). my_index的索引,然后定义了文档中两个字段的属性(titlecontent),并指定了字段的数据类型(text)。

  1. 向索引中添加文档

在有了索引之后,我们可以将文档添加到索引中。文档是Elasticsearch的基本单位,它包含我们要搜索的内容。

下面是向索引中添加文档的一个简单示例:

$params = [
    'index' => 'my_index',
    'body' => [
        'title' => 'Example Document',
        'content' => 'This is an example document for testing purposes',
    ],
];
$response = $client->index($params);

在上面的示例中,我们定义了一个名为my_index的索引,并在索引中添加了一个名为Example Document的文档,其中包含一些内容。

  1. 执行全文搜索

现在,我们已经创建了一个索引并添加了一些文档,我们可以开始执行全文搜索了。

以下是一个简单的示例,展示了如何使用Elasticsearch进行全文搜索:

$params = [
    'index' => 'my_index',
    'body' => [
        'query' => [
            'match' => [
                'content' => 'example',
            ],
        ],
    ],
];
$response = $client->search($params);

在上面的示例中,我们定义了一个匹配查询,它将搜索content字段中包含关键词example

    Tambah dokumen pada indeks
    1. Selepas kita mempunyai indeks, kita boleh menambah dokumen pada indeks. Dokumen ialah unit asas Elasticsearch dan mengandungi kandungan yang kami cari.

    Berikut ialah contoh mudah untuk menambah dokumen pada indeks:

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

    Dalam contoh di atas, kami mentakrifkan indeks bernama my_index dan menambahkan dokumen baharu bernama Contoh Dokumen dokumen, yang mengandungi beberapa kandungan.

      Lakukan carian teks penuh

      Sekarang kami telah mencipta indeks dan menambah beberapa dokumen, kami boleh mula melakukan carian teks penuh. 🎜🎜Berikut ialah contoh mudah yang menunjukkan cara menggunakan Elasticsearch untuk carian teks penuh: 🎜rrreee🎜Dalam contoh di atas, kami telah menentukan pertanyaan padanan yang akan mencari kata kunci yang terkandung dalam medan kandungan Dokumentasi untuk contoh. 🎜🎜🎜Memproses hasil carian🎜🎜🎜Akhir sekali, kita perlu memproses hasil carian dan mengeluarkannya ke antara muka pengguna. Berikut ialah contoh mudah yang menunjukkan cara memproses hasil carian: 🎜rrreee🎜 Dalam contoh di atas, kami mengulangi setiap dokumen dalam hasil carian dan mengeluarkan tajuk dan kandungan. 🎜🎜Ringkasan🎜🎜Dengan menggunakan PHP dan Elasticsearch, kami boleh melaksanakan fungsi carian teks penuh dengan mudah. Artikel ini menyediakan contoh mudah yang menunjukkan cara menyambung ke Elasticsearch, mencipta indeks, menambah dokumen, melakukan carian teks penuh dan memproses hasil carian. Menggunakan asas ini, anda boleh membina aplikasi carian teks penuh yang lebih berkuasa dan kompleks. Harap artikel ini membantu anda! 🎜

Atas ialah kandungan terperinci Cara cepat melaksanakan carian teks penuh 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