Cara membina sistem pengesyoran berita berprestasi tinggi menggunakan Elasticsearch dan PHP

PHPz
Lepaskan: 2023-07-07 16:32:01
asal
1331 orang telah melayarinya

Cara membina sistem pengesyoran berita berprestasi tinggi menggunakan Elasticsearch dan PHP

Abstrak:
Sistem pengesyoran berita telah menjadi bahagian penting dalam aplikasi Internet moden. Ia boleh memberikan cadangan kandungan berita yang diperibadikan berdasarkan minat dan pilihan pengguna. Artikel ini akan memperkenalkan cara menggunakan Elasticsearch dan PHP untuk membina sistem pengesyoran berita berprestasi tinggi dan menyediakan contoh kod yang berkaitan.

1. Persediaan
Sebelum anda mula, pastikan anda telah memasang perisian berikut:

  1. Elasticsearch: Ini adalah enjin carian dan analisis yang diedarkan dalam masa nyata untuk menyimpan dan mendapatkan semula data berita.
  2. PHP: Kami akan menggunakan PHP untuk menulis kod yang berinteraksi dengan Elasticsearch.

2. Pemodelan Data
Pertama, kita perlu menentukan model data berita. Setiap berita hendaklah mempunyai sifat-sifat berikut:

  1. Tajuk: tajuk berita.
  2. Kandungan: teks utama berita.
  3. Tarikh: Tarikh berita itu dikeluarkan.
  4. Kategori: Kategori yang tergolong dalam berita, seperti sukan, teknologi, dsb.
  5. Kata kunci: Kata kunci yang menerangkan topik berita.

Kita boleh menggunakan fungsi pemetaan Elasticsearch untuk menentukan model ini. Berikut ialah contoh definisi pemetaan:

PUT /news_index
{
  "mappings": {
    "news": {
      "properties": {
        "title": {
          "type": "text"
        },
        "content": {
          "type": "text"
        },
        "date": {
          "type": "date"
        },
        "category": {
          "type": "keyword"
        },
        "keywords": {
          "type": "keyword"
        }
      }
    }
  }
}
Salin selepas log masuk

3. Import data
Langkah seterusnya ialah mengimport data berita ke dalam Elasticsearch. Kita boleh menulis skrip PHP untuk menyelesaikan tugas ini. Berikut ialah contoh kod:

require 'vendor/autoload.php';

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

$newsData = [
  [
    'title' => '新闻标题1',
    'content' => '新闻内容1',
    'date' => '2021-01-01',
    'category' => '科技',
    'keywords' => ['人工智能', '机器学习']
  ],
  // 更多新闻数据...
];

$params = [];
foreach ($newsData as $news) {
  $params['body'][] = [
    'index' => [
      '_index' => 'news_index',
      '_type' => 'news'
    ]
  ];
  $params['body'][] = $news;
}

$response = $client->bulk($params);
Salin selepas log masuk

4 Carian dan pengesyoran
Setelah import data selesai, kami boleh menggunakan fungsi carian yang disediakan oleh Elasticsearch untuk melaksanakan cadangan berita. Berikut ialah kod sampel:

$params = [
  'index' => 'news_index',
  'body' => [
    'query' => [
      'bool' => [
        'should' => [
          ['match' => ['keywords' => '人工智能']],
          ['match' => ['category' => '科技']]
        ]
      ]
    ]
  ]
];

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

foreach ($response['hits']['hits'] as $hit) {
  // 处理每条搜索结果
}
Salin selepas log masuk

Dalam kod sampel di atas, kami membina pertanyaan kompaun (permintaan bool), yang menggunakan klausa should untuk menunjukkan bahawa selagi salah satu syarat dipenuhi. Dengan cara ini, kami boleh melaksanakan fungsi cadangan berita berdasarkan kata kunci dan kategori.

Kesimpulan:
Menggunakan Elasticsearch dan PHP untuk membina sistem pengesyoran berita berprestasi tinggi. Contoh kod yang disediakan dalam artikel menunjukkan cara menggunakan Elasticsearch untuk pemodelan data, import data dan pelaksanaan fungsi carian dan pengesyoran. Saya harap artikel ini akan membantu anda membina sistem pengesyoran berita.

Atas ialah kandungan terperinci Cara membina sistem pengesyoran berita berprestasi tinggi menggunakan Elasticsearch dan PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:php.cn
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
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!