Rumah > pangkalan data > Redis > Membina enjin carian masa nyata dengan Redis dan JavaScript: Cara mendapatkan semula artikel dengan cepat

Membina enjin carian masa nyata dengan Redis dan JavaScript: Cara mendapatkan semula artikel dengan cepat

WBOY
Lepaskan: 2023-07-30 23:45:22
asal
1430 orang telah melayarinya

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.

  1. Segmentasi teks
    Sebelum mengindeks artikel, artikel perlu dibahagikan. Pembahagian perkataan adalah untuk memotong artikel kepada perkataan bebas mengikut peraturan tertentu untuk pengindeksan berikutnya. Teknologi pembahagian perkataan biasa termasuk pembahagian perkataan berasaskan peraturan, pembahagian perkataan berasaskan statistik dan pembahagian perkataan berasaskan pembelajaran mesin.

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构建实时搜索引擎"]
Salin selepas log masuk
  1. Bina indeks terbalik
    Indeks terbalik ialah struktur data yang mengaitkan kata kunci dengan artikel berkaitan. Ia boleh menyediakan carian kata kunci yang pantas dan mencari artikel yang berkaitan. Membina indeks terbalik memerlukan membahagikan setiap artikel kepada perkataan dan mengaitkan setiap kata kunci dengan artikel.
// 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);
  });
});
Salin selepas log masuk

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
Salin selepas log masuk

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);
}
Salin selepas log masuk

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!

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