Carian teks penuh Redis dalam aplikasi PHP
Dengan perkembangan teknologi Internet yang berterusan, enjin carian semakin digunakan secara meluas. Dalam konteks Internet, enjin carian telah menjadi salah satu cara utama untuk pengguna mendapatkan maklumat. Dalam proses ini, teknologi carian teks penuh memainkan peranan yang penting. Carian teks penuh mengindeks kandungan teks untuk mencari teks yang sepadan dengan cepat apabila pengguna bertanya. Terdapat banyak penyelesaian untuk melaksanakan carian teks penuh dalam aplikasi PHP, dan artikel ini akan menumpukan pada carian teks penuh Redis dalam aplikasi PHP.
Redis ialah pangkalan data dalam memori bukan perhubungan berprestasi tinggi yang menyokong pelbagai struktur data, termasuk rentetan, cincang, senarai, set dan set tersusun. Redis juga menyediakan banyak ciri berkuasa, seperti terbitkan/langganan, transaksi, skrip Lua, dsb. Oleh itu, Redis sesuai untuk pelbagai senario, seperti caching, baris gilir, pengiraan masa nyata, kunci teragih, dsb. Pada masa yang sama, prestasi tinggi dan ketersediaan tinggi Redis juga menjadikannya salah satu kaedah penyimpanan data yang paling biasa digunakan dalam aplikasi PHP.
Prinsip asas Redis untuk melaksanakan carian teks penuh adalah untuk mencari kandungan teks dengan cepat semasa pertanyaan dengan mewujudkan indeks. Dalam proses pengindeksan, kandungan teks perlu diuraikan kepada beberapa perkataan, dan kemudian hubungan pemetaan diwujudkan antara perkataan ini dan pengecam kandungan teks. Dalam struktur data yang menyimpan indeks, setiap perkataan sepadan dengan set tersusun, dan set tertib ini menyimpan pengecam dan bilangan kejadian kandungan teks di mana perkataan itu muncul. Apabila membuat pertanyaan, mula-mula uraikan rentetan pertanyaan kepada beberapa perkataan, kemudian dapatkan pengecam kandungan teks daripada set tersusun yang sepadan dengan perkataan itu, isikannya mengikut bilangan kejadian, dan akhirnya kembalikan hasilnya.
Dalam aplikasi PHP, Redis mempunyai banyak cara untuk melaksanakan carian teks penuh Yang paling biasa digunakan ialah melalui skrip Set Isih dan Lua yang disediakan oleh Redis. Butiran pelaksanaan khusus adalah seperti berikut:
- Mencipta indeks
Proses penubuhan indeks biasanya dijalankan apabila pelayan bermula, dan kandungan teks yang perlu diindeks dibaca daripada pangkalan data Kemudian menguraikannya kepada beberapa perkataan, mewujudkan hubungan pemetaan antara perkataan ini dan pengecam kandungan teks, dan akhirnya menyimpan hasilnya dalam Redis. Kod khusus adalah seperti berikut:
<?php // 建立索引 function buildIndex($redis, $db) { $sql = "SELECT id, title, content FROM article"; $sth = $db->query($sql); while ($row = $sth->fetch(PDO::FETCH_ASSOC)) { $id = $row['id']; $title = $row['title']; $content = $row['content']; // 分解单词 $words = preg_split('/s+/', $title . ' ' . $content); $words = array_unique($words); foreach ($words as $word) { if (!$word) { continue; } $redis->zIncrBy('index:' . $word, 1, $id); } } } ?>
- Query
Proses pertanyaan dibahagikan kepada dua langkah Pertama, rentetan pertanyaan diuraikan kepada beberapa perkataan, dan kemudian setiap satu perkataan sepadan dengan Dapatkan pengecam kandungan teks daripada koleksi tersusun, susun mengikut bilangan kejadian, dan akhirnya kembalikan hasilnya. Kod khusus adalah seperti berikut:
<?php // 全文搜索 function search($redis, $query, $offset, $count) { $words = preg_split('/s+/', $query); $words = array_unique($words); $tmpKeys = array(); foreach ($words as $word) { if (!$word) { continue; } $tmpKey = 'idx:' . $word; $redis->zInter($tmpKey, array('index:' . $word), array(1)); $tmpKeys[] = $tmpKey; } $redis->zUnion('idx:result', $tmpKeys, array(1)); $redis->zRevRange('idx:result', $offset, $offset + $count - 1); } ?>
- Skrip Lua
Untuk mengurangkan penghantaran rangkaian dan meningkatkan kecekapan pertanyaan, anda boleh menggunakan skrip Lua untuk merangkum proses pertanyaan ke dalam suatu perintah. Kod khusus adalah seperti berikut:
<?php // 全文搜索,使用 Lua 脚本实现 function search($redis, $query, $offset, $count) { $script = " local words = redis.call('SPLIT', ARGV[1], '[^%w]+') local tmpKeys = {} for i, word in ipairs(words) do if word ~= '' then local tmpKey = 'idx:' .. word redis.call('ZINTERSTORE', tmpKey, 1, 'index:' .. word) table.insert(tmpKeys, tmpKey) end end redis.call('ZUNIONSTORE', 'idx:result', #tmpKeys, unpack(tmpKeys)) return redis.call('ZREVRANGE', 'idx:result', ARGV[2], ARGV[3]) "; return $redis->eval($script, 3, $query, $offset, $offset + $count - 1); } ?>
Ringkasan:
Redis melaksanakan carian teks penuh dalam aplikasi PHP Dengan mewujudkan indeks, kandungan teks boleh dicari dengan cepat semasa pertanyaan, memberikan permainan penuh kepada prestasi tinggi dan ketersediaan tinggi kelebihan Redis. Dengan menggunakan skrip Sorted Set dan Lua yang disediakan oleh Redis, tugas carian teks penuh boleh diselesaikan dengan lebih baik, menyediakan penyelesaian yang cekap untuk pembangun PHP. Walau bagaimanapun, perlu diingatkan bahawa apabila jumlah data adalah besar, Redis mungkin menghadapi masalah memori yang tidak mencukupi. Pada masa ini, strategi penyimpanan dan pengindeksan data yang munasabah perlu direka bentuk untuk mengelakkan limpahan memori Redis.
Atas ialah kandungan terperinci Carian teks penuh Redis dalam aplikasi PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool
Gambar buka pakaian secara percuma

Clothoff.io
Penyingkiran pakaian AI

AI Hentai Generator
Menjana ai hentai secara percuma.

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas



1. Mulakan menu [Start], masukkan [cmd], klik kanan [Command Prompt], dan pilih Run as [Administrator]. 2. Masukkan arahan berikut mengikut turutan (salin dan tampal dengan teliti): SCconfigwuauservstart=auto, tekan Enter SCconfigbitsstart=auto, tekan Enter SCconfigcryptsvcstart=auto, tekan Enter SCconfigtrustedinstallerstart=auto, tekan Enter SCconfigwuauservtype=share, tekan Enter netstopwuauserv , tekan enter netstopcryptS

Strategi caching dalam GolangAPI boleh meningkatkan prestasi dan mengurangkan beban pelayan Strategi yang biasa digunakan ialah: LRU, LFU, FIFO dan TTL. Teknik pengoptimuman termasuk memilih storan cache yang sesuai, caching hierarki, pengurusan ketidaksahihan dan pemantauan dan penalaan. Dalam kes praktikal, cache LRU digunakan untuk mengoptimumkan API untuk mendapatkan maklumat pengguna daripada pangkalan data Data boleh diambil dengan cepat daripada cache Jika tidak, cache boleh dikemas kini selepas mendapatkannya daripada pangkalan data.

Dalam pembangunan PHP, mekanisme caching meningkatkan prestasi dengan menyimpan sementara data yang kerap diakses dalam memori atau cakera, dengan itu mengurangkan bilangan akses pangkalan data. Jenis cache terutamanya termasuk memori, fail dan cache pangkalan data. Caching boleh dilaksanakan dalam PHP menggunakan fungsi terbina dalam atau perpustakaan pihak ketiga, seperti cache_get() dan Memcache. Aplikasi praktikal biasa termasuk caching hasil pertanyaan pangkalan data untuk mengoptimumkan prestasi pertanyaan dan caching halaman output untuk mempercepatkan pemaparan. Mekanisme caching berkesan meningkatkan kelajuan tindak balas laman web, meningkatkan pengalaman pengguna dan mengurangkan beban pelayan.

Mula-mula anda perlu menetapkan bahasa sistem kepada paparan Bahasa Cina Mudah dan mulakan semula. Sudah tentu, jika anda telah menukar bahasa paparan kepada Bahasa Cina Ringkas sebelum ini, anda boleh melangkau langkah ini sahaja. Seterusnya, mula mengendalikan pendaftaran, regedit.exe, navigasi terus ke HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlNlsLanguage dalam bar navigasi kiri atau bar alamat atas, dan kemudian ubah suai nilai kunci InstallLanguage dan nilai kunci Lalai kepada 0804 (jika anda ingin menukarnya ke Bahasa Inggeris en- kami, anda perlu Mula-mula tetapkan bahasa paparan sistem kepada en-us, mulakan semula sistem dan kemudian tukar semuanya kepada 0409) Anda mesti memulakan semula sistem pada ketika ini.

Menggunakan cache Redis boleh mengoptimumkan prestasi halaman tatasusunan PHP. Ini boleh dicapai melalui langkah berikut: Pasang klien Redis. Sambung ke pelayan Redis. Cipta data cache dan simpan setiap halaman data ke dalam cincangan Redis dengan kunci "halaman:{page_number}". Dapatkan data daripada cache dan elakkan operasi mahal pada tatasusunan besar.

1. Mula-mula, klik dua kali ikon [PC ini] pada desktop untuk membukanya. 2. Kemudian klik dua kali butang tetikus kiri untuk memasuki [pemacu C]. 3. Kemudian cari folder [windows] dalam pemacu C dan klik dua kali untuk masuk. 4. Selepas memasukkan folder [windows], cari folder [SoftwareDistribution]. 5. Selepas masuk, cari folder [muat turun], yang mengandungi semua fail muat turun dan kemas kini win11. 6. Jika kita ingin memadam fail-fail ini, hanya padamkannya terus dalam folder ini.

Redis ialah cache nilai kunci berprestasi tinggi. Sambungan PHPRedis menyediakan API untuk berinteraksi dengan pelayan Redis. Gunakan langkah berikut untuk menyambung ke Redis, menyimpan dan mendapatkan semula data: Sambung: Gunakan kelas Redis untuk menyambung ke pelayan. Penyimpanan: Gunakan kaedah yang ditetapkan untuk menetapkan pasangan nilai kunci. Retrieval: Gunakan kaedah get untuk mendapatkan nilai kunci.

Punca dan penyelesaian untuk kesilapan Apabila menggunakan PECL untuk memasang sambungan dalam persekitaran Docker Apabila menggunakan persekitaran Docker, kami sering menemui beberapa sakit kepala ...
