Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Penyelesaian carian berbilang bahasa yang dilaksanakan oleh PHP dan Elasticsearch

Penyelesaian carian berbilang bahasa yang dilaksanakan oleh PHP dan Elasticsearch

PHPz
PHPzasal
2023-07-12 20:19:37717semak imbas

Penyelesaian untuk carian berbilang bahasa yang dilaksanakan oleh PHP dan Elasticsearch

Dengan perkembangan pesat Internet global, semakin banyak aplikasi perlu menyokong carian berbilang bahasa. Dalam persekitaran berbilang bahasa ini, melaksanakan sistem carian yang cekap dan tepat adalah sangat penting untuk pengalaman pengguna dan pertanyaan data. Artikel ini akan memperkenalkan cara menggunakan PHP dan Elasticsearch untuk melaksanakan penyelesaian carian berbilang bahasa.

1. Mengapa memilih Elasticsearch?
Elasticsearch ialah enjin carian dan analisis teragih sumber terbuka melalui fungsi carian teks penuh yang berkuasa dan pembahagian perkataan yang menyokong berbilang bahasa, ia dapat memenuhi keperluan carian berbilang bahasa. Berbanding dengan pangkalan data hubungan tradisional, Elasticsearch mempunyai prestasi yang lebih tinggi, sintaks pertanyaan yang lebih fleksibel dan kebolehskalaan yang lebih baik, menjadikannya sangat sesuai untuk membina enjin carian.

2. Pasang dan konfigurasikan Elasticsearch
Pertama, kita perlu memasang Elasticsearch pada pelayan dan melaksanakan konfigurasi asas. Untuk prosedur pemasangan dan konfigurasi khusus, sila rujuk kepada dokumentasi rasmi Elasticsearch. Selepas pemasangan selesai, kami perlu mencipta indeks dan menentukan pemetaan yang sepadan untuk menyokong carian berbilang bahasa.

3. Cipta indeks dan pemetaan
Dalam Elasticsearch, indeks adalah serupa dengan jadual dalam pangkalan data hubungan dan digunakan untuk menyimpan dan mengindeks data. Kami boleh membuat indeks dan menentukan pemetaan yang sepadan dengan menghantar permintaan HTTP. Berikut ialah contoh mudah:

PUT /my_index
{
  "mappings": {
    "properties": {
      "title": {
        "type": "text",
        "fields": {
          "english": {
            "type": "text",
            "analyzer": "english"
          },
          "chinese": {
            "type": "text",
            "analyzer": "ik_max_word"
          }
        }
      },
      "content": {
        "type": "text",
        "fields": {
          "english": {
            "type": "text",
            "analyzer": "english"
          },
          "chinese": {
            "type": "text",
            "analyzer": "ik_max_word"
          }
        }
      }
    }
  }
}

Dalam contoh di atas, kami mencipta indeks bernama "my_index" dan mentakrifkan dua medan "tajuk" dan "kandungan". Setiap medan mempunyai dua subbidang "english" dan "cina", yang digunakan untuk menyimpan hasil segmentasi perkataan Inggeris dan Cina masing-masing. Medan bahasa Inggeris menggunakan segmenter perkataan bahasa Inggeris terbina dalam Elasticsearch, dan medan Cina menggunakan kata segmenter bahasa Cina ik_max_word.

4 Operasi carian dalam PHP
Dalam PHP, kami boleh menggunakan perpustakaan pelanggan rasmi yang disediakan oleh Elasticsearch untuk melaksanakan operasi carian. Pertama, kita perlu memasang pakej elasticsearch/elasticsearch. Anda boleh menggunakan Komposer untuk melengkapkan pemasangan, cuma jalankan penamaan berikut:

composer require elasticsearch/elasticsearch

Seterusnya, kami perlu memperkenalkan pakej elasticsearch dan mewujudkan sambungan:

require 'vendor/autoload.php';

$client = new ElasticsearchClient([
    'hosts' => ['localhost:9200']
]);

Selepas mewujudkan sambungan, kami boleh mula melakukan operasi carian. Berikut ialah contoh kod carian PHP mudah:

$params = [
    'index' => 'my_index',
    'type' => '_doc',
    'body' => [
        'query' => [
            'multi_match' => [
                'query' => 'keyword',
                'fields' => ['title.english', 'content.english', 'title.chinese', 'content.chinese']
            ]
        ]
    ]
];

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

Dalam contoh di atas, kami membina badan permintaan yang mengandungi kata kunci pertanyaan dan medan carian, dan kemudian menggunakan kaedah carian klien Elasticsearch untuk melaksanakan operasi carian. Hasil carian akan disimpan dalam pembolehubah $response.

5. Analisis dan paparan keputusan
Langkah terakhir ialah menghuraikan hasil carian dan memaparkannya kepada pengguna. Hasil carian Elasticsearch ialah struktur data yang mengandungi berbilang dokumen. Kita perlu merentasi dokumen ini dan menghuraikan serta memaparkannya mengikut keperluan.

Berikut ialah contoh kod yang mudah:

foreach ($response['hits']['hits'] as $hit) {
    $title = $hit['_source']['title'];
    $content = $hit['_source']['content'];

    // 在这里进行结果展示或其他操作
}

Dalam contoh di atas, kami mengulangi setiap dokumen dalam hasil carian dan mendapatkan tajuk dan kandungan daripadanya. Anda boleh memaparkan, mengisih atau melakukan operasi lain pada keputusan mengikut keperluan sebenar.

6. Ringkasan
Menggunakan PHP dan Elasticsearch untuk melaksanakan penyelesaian carian berbilang bahasa boleh meningkatkan pengalaman pengguna dan memberikan hasil carian yang tepat. Melalui pemetaan indeks yang munasabah dan penggunaan keupayaan carian berkuasa yang disediakan oleh Elasticsearch, kami boleh membina sistem carian berbilang bahasa berprestasi tinggi. Saya harap kandungan artikel ini dapat membantu anda, dan saya berharap anda membina sistem carian berbilang bahasa yang sangat baik!

Atas ialah kandungan terperinci Penyelesaian carian berbilang bahasa yang dilaksanakan oleh 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