Rumah > Artikel > pangkalan data > Membina enjin carian masa nyata dengan Redis dan JavaScript: Cara mendapatkan semula artikel dengan cepat
Membina enjin carian masa nyata menggunakan Redis dan JavaScript: Cara mendapatkan semula artikel dengan cepat
Pengenalan:
Dalam era Internet hari ini, adalah amat penting untuk mendapatkan semula sejumlah besar data dengan cepat. Untuk tapak web dengan jumlah artikel yang banyak, enjin carian masa nyata boleh menyediakan fungsi perolehan semula yang cekap, membolehkan pengguna mencari maklumat yang mereka perlukan dengan cepat. Artikel ini akan memperkenalkan cara menggunakan Redis dan JavaScript untuk membina enjin carian masa nyata untuk mendapatkan semula artikel dengan cepat.
1. Pengenalan kepada Redis
Redis ialah sistem storan nilai kunci berprestasi tinggi berasaskan memori, yang digunakan secara meluas dalam cache, baris gilir mesej, statistik masa nyata dan medan lain. Ia menyediakan banyak struktur data, seperti rentetan, cincang, senarai, set dan set tersusun, dsb., yang boleh memenuhi keperluan pelbagai senario.
2. Pengindeksan teks
Sebelum membina enjin carian masa nyata, anda perlu mengindeks artikel terlebih dahulu. Pengindeksan teks menggunakan algoritma khusus untuk mengekstrak kata kunci daripada artikel dan membina struktur data indeks untuk mencari artikel berkaitan dengan cepat.
Di sini kami menggunakan kaedah pembahagian perkataan yang mudah, menggunakan ruang dalam artikel sebagai pemisah untuk mengekstrak setiap perkataan.
function tokenize(text) { return text.split(" "); } // 示例 var text = "利用Redis和JavaScript构建实时搜索引擎"; var tokens = tokenize(text); console.log(tokens); // ["利用Redis和JavaScript构建实时搜索引擎"]
// Redis连接 const redis = require("redis"); const client = redis.createClient(); // 文章索引 var articles = [ { id: 1, title: "利用Redis和JavaScript构建实时搜索引擎", content: "..." }, { id: 2, title: "使用Redis进行缓存优化", content: "..." }, { id: 3, title: "JavaScript实现数据结构与算法", content: "..." }, // 更多文章... ]; // 构建倒排索引 articles.forEach(function(article) { var tokens = tokenize(article.title + " " + article.content); tokens.forEach(function(token) { client.sadd("index:" + token, article.id); }); });
3 Enjin carian
Dengan indeks teks, anda boleh membina enjin carian masa nyata seterusnya. Teras enjin carian masa nyata adalah untuk memadankan kata kunci yang dimasukkan oleh pengguna dengan indeks terbalik untuk mencari artikel yang berkaitan.
// 搜索引擎 function search(keyword) { var tokens = tokenize(keyword); var result = client.sinter( tokens.map(function(token) { return "index:" + token; }) ); return result; } // 示例 var keyword = "Redis 搜索引擎"; var result = search(keyword); console.log(result); // [1, 2],表示找到了文章1和2
4. Kemas kini masa nyata
Dalam aplikasi sebenar, artikel boleh ditambah, dipadam atau diubah suai. Untuk memastikan indeks masa nyata, indeks perlu dikemas kini dalam masa apabila artikel berubah.
// 添加文章 function addArticle(article) { var tokens = tokenize(article.title + " " + article.content); tokens.forEach(function(token) { client.sadd("index:" + token, article.id); }); } // 删除文章 function removeArticle(articleId) { var tokens = client.smembers("index:" + articleId); tokens.forEach(function(token) { client.srem("index:" + token, articleId); }); } // 修改文章 function updateArticle(article) { removeArticle(article.id); addArticle(article); }
Kesimpulan:
Artikel ini menggunakan Redis dan JavaScript untuk membina enjin carian masa nyata yang ringkas. Dengan membina indeks teks dan indeks terbalik, fungsi mendapatkan semula artikel dengan cepat direalisasikan. Pada masa yang sama, apabila artikel berubah, indeks boleh dikemas kini dalam masa nyata, mengekalkan sifat masa nyata enjin carian. Enjin carian masa nyata berdasarkan Redis dan JavaScript ini boleh digunakan untuk pelbagai senario di mana sejumlah besar artikel perlu diambil dengan cepat, meningkatkan pengalaman pengguna dan kelajuan tindak balas sistem.
Atas ialah kandungan terperinci Membina enjin carian masa nyata dengan Redis dan JavaScript: Cara mendapatkan semula artikel dengan cepat. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!