Rumah pembangunan bahagian belakang tutorial php Pembangunan PHP: Cara menggunakan Elasticsearch untuk melaksanakan carian teks penuh

Pembangunan PHP: Cara menggunakan Elasticsearch untuk melaksanakan carian teks penuh

Jun 14, 2023 pm 05:07 PM
php elasticsearch Carian teks penuh

Dalam aplikasi web moden, jumlah data semakin besar dan lebih besar, tetapi begitu juga jangkaan pengguna dan akses kepada data. Oleh itu, teknologi carian menjadi semakin penting untuk memenuhi jangkaan pengguna dan memberikan pengalaman pengguna yang lebih baik. Carian teks penuh ialah teknologi berkuasa yang boleh mengindeks, mencari dan mengisih sejumlah besar data dengan cepat. Dalam hal ini, Elasticsearch ialah enjin carian sumber terbuka terkemuka yang menyediakan banyak ciri lanjutan serta ketersediaan tinggi, berskala mudah dan kelebihan lain.

Dalam artikel ini, kami akan memperkenalkan cara menggunakan Elasticsearch untuk melaksanakan carian teks penuh melalui PHP. Kami akan bermula dengan persediaan persekitaran, termasuk pemasangan Elasticsearch dan PHP, dan kemudian memberikan pengenalan yang mendalam daripada tiga aspek utama pengindeksan, carian dan analisis.

1. Tetapan persekitaran

Mula-mula, pasang Elasticsearch secara setempat atau pada pelayan. Elasticsearch boleh dimuat turun dan dipasang dari laman web rasmi atau melalui pengurus pakej.

Kedua, pasang klien PHP Elasticsearch melalui Composer, iaitu elasticsearch-php Ia menyediakan banyak kaedah dan kelas yang mudah untuk memanggil API Elasticsearch.

komposer memerlukan elasticsearch/elasticsearch

Selepas pemasangan selesai, konfigurasikan perkara berikut dalam fail PHP:

memerlukan 'vendor/autoload.php';

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

Dengan cara ini, pelanggan dicipta yang berkomunikasi dengan pelayan Elasticsearch.

2. Indeks

Dalam Elasticsearch, indeks ialah pengumpulan data yang digunakan untuk menyimpan dan mencari data dengan cepat. Kita boleh memasukkan data ke dalam indeks menggunakan API elasticsearch-php.

  1. Buat indeks

Pertama, kita perlu mencipta indeks baharu. Kami menggunakan kod berikut untuk mencipta jenis bernama "my_type" dalam indeks bernama "my_index".

$params = [

'index' => 'my_index',
'body'  => [
    'mappings' => [
        'my_type' => [
            'properties' => [
                'title' => ['type' => 'text'],
                'body'  => ['type' => 'text'],
            ]
        ]
    ]
]
Salin selepas log masuk

];

$respons = $client->indeks()->create($params);

Medan "tajuk" dan "badan" dalam tatasusunan "sifat" adalah daripada jenis "teks", yang bermaksud ia diindeks teks penuh. Dalam amalan, kami akan menetapkan indeks dan jenis medan mengikut keperluan khusus.

Dengan cara ini, kami telah berjaya mencipta indeks bernama "my_index".

  1. Tambah data dokumen pada indeks

Masukkan dokumen ke dalam indeks menggunakan kod berikut:

$params = [

'index' => 'my_index',
'type'  => 'my_type',
'body'  => [
    'title' => 'PHP Elasticsearch 全文检索',
    'body'  => 'Elasticsearch 是一个领先的全文搜索引擎,其功能包括分布式、高可用、实时搜索和分析能力等。',
]
Salin selepas log masuk

];

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

Di sini, kami memasukkan dokumen dengan tajuk dan kandungan ke dalam indeks.

  1. Kemas Kini Dokumen

Jika anda perlu mengemas kini dokumen yang sudah ada dalam indeks, gunakan kod berikut:

$params = [

'index' => 'my_index',
'type'  => 'my_type',
'id'    => '1',
'body'  => [
    'doc' => [
        'title' => '修改后的标题',
        'body'  => '修改后的正文内容',
    ]
]
Salin selepas log masuk

];

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

Perlu diambil perhatian bahawa ID dokumen mesti disediakan semasa mengemas kini.

  1. Padam Dokumen

Jika anda perlu memadamkan dokumen sedia ada, gunakan kod berikut:

$params = [

'index' => 'my_index',
'type'  => 'my_type',
'id'    => '1'
Salin selepas log masuk

] ;

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

Dengan cara ini, kami telah menyelesaikan penciptaan, sisipan, kemas kini dan pemadaman indeks dan dokumen.

3. Cari

Mari lihat cara menggunakan API elasticsearch-php untuk mencari.

  1. Pertanyaan Mudah

Mula-mula, mari kita laksanakan pertanyaan mudah:

$params = [

'index' => 'my_index',
'type'  => 'my_type',
'body'  => [
    'query' => [
        'match' => [
            'title' => 'PHP'
        ]
    ]
]
Salin selepas log masuk

];

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

Dalam kod di atas, kami melaksanakan pertanyaan padanan untuk semua dokumen dalam indeks yang mengandungi kata kunci "PHP" . Hasil carian akan disimpan dalam pembolehubah $response.

  1. Pertanyaan berbilang syarat

Jika anda perlu menanyakan berbilang syarat, anda boleh menggunakan pertanyaan bool untuk menggabungkan berbilang syarat:

$params = [

'index' => 'my_index',
'type'  => 'my_type',
'body'  => [
    'query' => [
        'bool' => [
            'must' => [
                [ 'match' => [ 'title' => 'PHP' ] ],
                [ 'match' => [ 'body'  => '搜索引擎' ] ]
            ]
        ]
    ]
]
Salin selepas log masuk

];

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

Di sini, kami menetapkan dua syarat pertanyaan yang mesti dipenuhi pada masa yang sama melalui parameter mesti .

  1. Pertanyaan halaman

Jika jumlah data adalah besar, kami boleh halaman hasil carian:

$params = [

'index' => 'my_index',
'type'  => 'my_type',
'body'  => [
    'from' => 0, 'size' => 10,
    'query' => [
        'match' => [
            'title' => 'PHP'
        ]
    ]
]
Salin selepas log masuk

];

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

Nyatakan offset dan saiz hasil yang ditetapkan melalui parameter dari dan saiz.

  1. Isih mengikut skor

Untuk hasil carian yang lebih tepat, Elasticsearch mengira skor perkaitan untuk setiap dokumen. Isih mengikut rating boleh dilakukan dengan kod berikut:

$params = [

'index' => 'my_index',
'type'  => 'my_type',
'body'  => [
    'query' => [
        'match' => [
            'title' => 'PHP'
        ]
    ],
    'sort'  => [
        '_score' => [ 'order' => 'desc' ]
    ]
]
Salin selepas log masuk

];

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

Hasil pertanyaan akan diisih dari tinggi ke rendah mengikut skor perkaitan.

4. Analisis

Elasticsearch menyokong pelbagai fungsi analisis dan pengagregatan yang berkuasa, yang boleh kami gunakan untuk mendapatkan maklumat yang lebih mendalam tentang set data.

  1. Pengagregatan

Kod berikut boleh mendapatkan 10 perkataan teratas dengan kekerapan kejadian tertinggi dalam medan "tajuk":

$params = [

'index' => 'my_index',
'type'  => 'my_type',
'size'  => 0,
'body'  => [
    'aggs' => [
        'top_titles' => [
            'terms' => [
                'field' => 'title.keyword',
                'size'  => 10
            ]
        ]
    ]
]
Salin selepas log masuk

];

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

Tentukan parameter saiz untuk melangkau dokumen yang dikembalikan dan hanya mengembalikan hasil agregat.

  1. Penganalisis

Elasticsearch juga menyediakan banyak penganalisis yang berkuasa untuk menganalisis dan memproses teks. Kod berikut menunjukkan cara menggunakan parser Cina untuk memproses teks:

$params = [

'index' => 'my_index',
'body'  => [
    'settings' => [
        'analysis' => [
            'analyzer' => [
                'my_analyzer'   => [
                    'type'      => 'custom',
                    'tokenizer' => 'ik_max_word'
                ]
            ]
        ]
    ]
]
Salin selepas log masuk

];

$response = $client->indeks() - >putSettings($params);

这里,我们为名为“my_analyzer”的分析器指定了“ik_max_word”分词器。

下面的代码可以使用这个分析器来分析文本:

$params = [

'index' => 'my_index',
'body'  => [
    'query' => [
        'query_string' => [
            'query'         => '搜索',
            'analyzer'      => 'my_analyzer',
            'default_field' => 'title'
        ]
    ]
]
Salin selepas log masuk

];

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

这样,我们就可以使用中文分析器来分析中文文本了。

总结

在本文中,我向您介绍了如何使用elasticsearch-php的API来创建、添加、更新和删除索引和文档,以及如何使用搜索API来执行简单和复杂的查询。此外,我还介绍了使用聚合和分析器来处理数据的相关技术。

随着数据集规模的增加,Elasticsearch的重要性逐渐增加。只要您熟悉它的API,您就可以通过PHP轻松地利用其强大的搜索和分析能力来优化您的Web应用程序。

Atas ialah kandungan terperinci Pembangunan PHP: Cara menggunakan Elasticsearch untuk melaksanakan carian teks penuh. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
3 minggu yang lalu By 尊渡假赌尊渡假赌尊渡假赌

Alat panas

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina

SublimeText3 versi Cina

Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1

Hantar Studio 13.0.1

Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Panduan Pemasangan dan Naik Taraf PHP 8.4 untuk Ubuntu dan Debian Dec 24, 2024 pm 04:42 PM

PHP 8.4 membawa beberapa ciri baharu, peningkatan keselamatan dan peningkatan prestasi dengan jumlah penamatan dan penyingkiran ciri yang sihat. Panduan ini menerangkan cara memasang PHP 8.4 atau naik taraf kepada PHP 8.4 pada Ubuntu, Debian, atau terbitan mereka

CakePHP Bekerja dengan Pangkalan Data CakePHP Bekerja dengan Pangkalan Data Sep 10, 2024 pm 05:25 PM

Bekerja dengan pangkalan data dalam CakePHP adalah sangat mudah. Kami akan memahami operasi CRUD (Buat, Baca, Kemas Kini, Padam) dalam bab ini.

Tarikh dan Masa CakePHP Tarikh dan Masa CakePHP Sep 10, 2024 pm 05:27 PM

Untuk bekerja dengan tarikh dan masa dalam cakephp4, kami akan menggunakan kelas FrozenTime yang tersedia.

Muat naik Fail CakePHP Muat naik Fail CakePHP Sep 10, 2024 pm 05:27 PM

Untuk mengusahakan muat naik fail, kami akan menggunakan pembantu borang. Di sini, adalah contoh untuk muat naik fail.

Bincangkan CakePHP Bincangkan CakePHP Sep 10, 2024 pm 05:28 PM

CakePHP ialah rangka kerja sumber terbuka untuk PHP. Ia bertujuan untuk menjadikan pembangunan, penggunaan dan penyelenggaraan aplikasi lebih mudah. CakePHP adalah berdasarkan seni bina seperti MVC yang berkuasa dan mudah difahami. Model, Pandangan dan Pengawal gu

Pengesah Mencipta CakePHP Pengesah Mencipta CakePHP Sep 10, 2024 pm 05:26 PM

Pengesah boleh dibuat dengan menambah dua baris berikut dalam pengawal.

Pembalakan CakePHP Pembalakan CakePHP Sep 10, 2024 pm 05:26 PM

Log masuk CakePHP adalah tugas yang sangat mudah. Anda hanya perlu menggunakan satu fungsi. Anda boleh log ralat, pengecualian, aktiviti pengguna, tindakan yang diambil oleh pengguna, untuk sebarang proses latar belakang seperti cronjob. Mengelog data dalam CakePHP adalah mudah. Fungsi log() disediakan

Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Cara Menyediakan Kod Visual Studio (Kod VS) untuk Pembangunan PHP Dec 20, 2024 am 11:31 AM

Kod Visual Studio, juga dikenali sebagai Kod VS, ialah editor kod sumber percuma — atau persekitaran pembangunan bersepadu (IDE) — tersedia untuk semua sistem pengendalian utama. Dengan koleksi sambungan yang besar untuk banyak bahasa pengaturcaraan, Kod VS boleh menjadi c

See all articles