Rumah >pembangunan bahagian belakang >tutorial php >Bagaimana untuk melaksanakan carian berbilang bahasa dengan PHP dan Elasticsearch

Bagaimana untuk melaksanakan carian berbilang bahasa dengan PHP dan Elasticsearch

王林
王林asal
2023-07-17 08:12:11793semak imbas

Cara melaksanakan carian berbilang bahasa melalui PHP dan Elasticsearch

Dalam persekitaran Internet hari ini, dengan perkembangan globalisasi, carian berbilang bahasa telah menjadi salah satu fungsi yang diperlukan untuk banyak laman web. Sebagai enjin carian sumber terbuka yang berkuasa, Elasticsearch mempunyai keupayaan carian yang cekap dan fleksibel. Artikel ini akan memperkenalkan cara melaksanakan carian berbilang bahasa melalui PHP dan Elasticsearch, dengan contoh kod.

1. Persediaan
Sebelum anda mula, anda perlu memastikan bahawa persekitaran berikut telah dipasang:

  1. Persekitaran PHP: Pastikan PHP telah dipasang dan boleh berjalan seperti biasa.
  2. Elasticsearch: Pastikan Elasticsearch dipasang dan boleh bermula seperti biasa.

2. Cipta indeks
Sebelum melakukan carian berbilang bahasa, anda perlu mencipta indeks yang sesuai dan menyimpan data yang sepadan dalam Elasticsearch. Berikut ialah contoh mudah:

<?php

require 'vendor/autoload.php';

use ElasticsearchClientBuilder;

$hosts = [
    'http://localhost:9200'
];

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

$params = [
    'index' => 'my_index',
    'body'  => [
        'mappings' => [
            'properties' => [
                'title' => [
                    'type' => 'text',
                    'fields' => [
                        'zh' => [
                            'type' => 'text',
                            'analyzer' => 'ik_max_word',
                            'search_analyzer' => 'ik_smart'
                        ],
                        'en' => [
                            'type' => 'text',
                            'analyzer' => 'english',
                            'search_analyzer' => 'english'
                        ]
                    ]
                ],
                'content' => [
                    'type' => 'text',
                    'fields' => [
                        'zh' => [
                            'type' => 'text',
                            'analyzer' => 'ik_max_word',
                            'search_analyzer' => 'ik_smart'
                        ],
                        'en' => [
                            'type' => 'text',
                            'analyzer' => 'english',
                            'search_analyzer' => 'english'
                        ]
                    ]
                ]
            ]
        ]
    ]
];

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

Dalam kod di atas, kami menggunakan klien PHP Elasticsearch untuk mencipta indeks bernama my_index, yang mengandungi tajuk dan medan kandungan, sepadan dengan tajuk dan kandungan artikel masing-masing. Dua subbidang 'zh' dan 'en' ditakrifkan, yang digunakan untuk menyimpan data versi Cina dan Inggeris masing-masing, dan penganalisis yang sepadan ditentukan.

3. Masukkan data
Seterusnya, kita perlu memasukkan beberapa data ke dalam indeks untuk carian seterusnya. Berikut ialah contoh mudah:

<?php

$doc = [
    'title' => [
        'zh' => '中文标题',
        'en' => 'English title'
    ],
    'content' => [
        'zh' => '中文内容',
        'en' => 'English content'
    ]
];

$params = [
    'index' => 'my_index',
    'id'    => '1',
    'body'  => $doc
];

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

Dalam kod di atas, kami mencipta dokumen dengan tajuk dan kandungan bahasa Cina dan Inggeris, dan memasukkannya ke dalam indeks bernama my_index.

4. Carian
Selepas kami menyelesaikan penubuhan indeks dan sisipan data, kami boleh memulakan carian berbilang bahasa. Berikut ialah contoh mudah:

<?php

$params = [
    'index' => 'my_index',
    'body'  => [
        'query' => [
            'multi_match' => [
                'query' => '关键词',
                'fields' => ['title.zh', 'content.zh', 'title.en', 'content.en']
            ]
        ]
    ]
];

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

var_dump($response['hits']['hits']);

Dalam kod di atas, kami menggunakan carian berbilang bahasa berbilang medan untuk mencari dengan menyatakan medan dan kata kunci yang hendak dicari. Hasil carian diisih mengikut kaitan dan dokumen yang sepadan dikembalikan.

5. Ringkasan
Tidak rumit untuk melaksanakan carian berbilang bahasa melalui PHP dan Elasticsearch. Dengan membina indeks dan sisipan data yang sesuai, digabungkan dengan carian berbilang bahasa, berbilang medan, kami boleh melaksanakan keupayaan carian berbilang bahasa dengan cepat dan tepat. Semoga artikel ini bermanfaat kepada anda.

Atas ialah kandungan terperinci Bagaimana untuk melaksanakan carian berbilang bahasa 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