Rumah >pembangunan bahagian belakang >tutorial php >php Elasticsearch: Bagaimana untuk mengendalikan segmentasi perkataan Cina dan keperluan carian dalam bahasa lain?

php Elasticsearch: Bagaimana untuk mengendalikan segmentasi perkataan Cina dan keperluan carian dalam bahasa lain?

WBOY
WBOYasal
2023-09-13 11:07:421437semak imbas

php Elasticsearch: 如何处理中文分词及其他语言的搜索需求?

php Elasticsearch: Bagaimana untuk mengendalikan segmentasi perkataan Cina dan keperluan carian dalam bahasa lain?

Abstrak
Elasticsearch ialah enjin carian teragih berkuasa yang digunakan secara meluas dalam pelbagai jenis keperluan carian dan analisis data. Walau bagaimanapun, keperluan carian dalam bahasa bukan Inggeris, terutamanya carian Cina, memerlukan pemprosesan khas untuk memastikan ketepatan dan kebolehpercayaan. Artikel ini akan memperkenalkan cara menggunakan Elasticsearch dalam PHP untuk mengendalikan pembahagian perkataan Cina dan keperluan carian dalam bahasa lain, dan menyediakan contoh kod khusus.

Pengenalan
Pembahagian perkataan Cina ialah langkah yang sangat penting, yang membahagikan teks Cina kepada perkataan yang boleh dicari untuk carian dan padanan. Disebabkan oleh kerumitan semantik bahasa Cina, algoritma pembahagian perkataan Inggeris tradisional tidak sesuai untuk bahasa Cina. Nasib baik, Elasticsearch mempunyai pemalam terbina dalam yang menyokong pembahagian perkataan bahasa Cina, yang boleh mengendalikan keperluan carian bahasa Cina dengan mudah.

Langkah 1: Pasang Elasticsearch
Pertama, kita perlu memastikan bahawa Elasticsearch dipasang dan berjalan pada pelayan. Anda boleh melawati laman web rasmi Elasticsearch (https://www.elastic.co/) untuk mendapatkan pakej pemasangan terkini dan arahan pemasangan terperinci.

Langkah 2: Pasang klien Elasticsearch-php
Untuk menggunakan Elasticsearch dalam PHP, anda perlu memasang klien Elasticsearch-php. Anda boleh menggunakan Komposer atau memuat turun dan memasang secara manual.

Untuk memasang Elasticsearch-php menggunakan Komposer, anda boleh mencipta fail composer.json dalam direktori akar projek dan menambah kebergantungan berikut:

{
"memerlukan": {

   "elasticsearch/elasticsearch" : "^7.0"

}
}

Kemudian jalankan dalam terminal "pemasangan komposer" memasang kebergantungan.

Untuk memuat turun dan memasang secara manual, anda boleh melawati halaman Github Elasticsearch-php (https://github.com/elastic/elasticsearch-php), muat turun versi stabil terkini dan ekstrak ke laluan php projek.

Langkah 3: Wujudkan sambungan Elasticsearch
Dalam kod, anda perlu mewujudkan sambungan ke Elasticsearch terlebih dahulu. Anda boleh menggunakan kod berikut:

use ElasticsearchClientBuilder;

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

Alamat sambungan localhost:9200 lalai digunakan di sini Anda perlu membuat pelarasan mengikut situasi sebenar.

Langkah 4: Cipta indeks
Dalam Elasticsearch, data disimpan dalam indeks. Mula-mula kita perlu membuat indeks untuk menyimpan dokumen. Indeks bernama "my_index" boleh dibuat menggunakan kod berikut:

$params = [

'index' => 'my_index',
'body' => [
    'settings' => [
        'analysis' => [
            'analyzer' => [
                'default' => [
                    'type' => 'smartcn'
                ]
            ]
        ]
    ]
]

];

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

Di sini kita tetapkan " smartcn" pembahagian perkataan, iaitu pembahagian perkataan yang menyokong pembahagian perkataan bahasa Cina. Anda juga boleh memilih tokenizer lain mengikut keperluan.

Langkah 5: Masukkan dokumen
Kita boleh menggunakan kod berikut untuk memasukkan dokumen ke dalam indeks:

$params = [

'index' => 'my_index',
'body' => [
    'title' => '中国的美食',
    'content' => '中国有许多美食,如麻辣火锅、北京烤鸭等。',
    'timestamp' => time()
]

];

$client->index($params);

Di sini kami masukkan Dokumen dengan tajuk, kandungan dan cap masa.

Langkah 6: Cari Dokumen
Setelah kami mempunyai data dalam indeks, kami boleh mencari. Anda boleh menggunakan kod berikut untuk mencari:

$query = [

'index' => 'my_index',
'body' => [
    'query' => [
        'match' => [
            'content' => '火锅'
        ]
    ]
]

];

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

print_r($response);

Di sini kami mencari kata kunci yang mengandungi Dokumentasi untuk "periuk panas". Hasil carian akan dikembalikan dalam bentuk tatasusunan.

Kesimpulan
Tidak rumit untuk mengendalikan segmentasi perkataan Cina dan keperluan carian dalam bahasa lain dalam PHP Dengan bantuan Elasticsearch dan Elasticsearch-php, fungsi carian yang lengkap boleh direalisasikan dengan mudah. Hasil carian yang tepat dan cekap boleh diperolehi dengan menyediakan tokenizer yang betul dan membina pertanyaan carian yang sesuai. Kami berharap contoh kod khusus dalam artikel ini dapat membantu pembaca memahami dengan lebih baik dan menggunakan pembahagian perkataan Cina dan keperluan carian dalam bahasa lain.

Rujukan:

  1. Tapak web rasmi Elasticsearch: https://www.elastic.co/
  2. Elasticsearch-php Halaman Github: https://github.com/elastic/elasticsearch-php

Atas ialah kandungan terperinci php Elasticsearch: Bagaimana untuk mengendalikan segmentasi perkataan Cina dan keperluan carian dalam bahasa lain?. 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

Artikel berkaitan

Lihat lagi