Créer un moteur de recherche en temps réel à l'aide de Redis et JavaScript : comment récupérer rapidement des articles
Introduction :
À l'ère d'Internet d'aujourd'hui, il est extrêmement important de récupérer rapidement de grandes quantités de données. Pour un site Web comportant un grand nombre d’articles, un moteur de recherche en temps réel peut fournir des fonctions de récupération efficaces, permettant aux utilisateurs de trouver rapidement les informations dont ils ont besoin. Cet article explique comment utiliser Redis et JavaScript pour créer un moteur de recherche en temps réel permettant de récupérer rapidement des articles.
1. Introduction à Redis
Redis est un système de stockage clé-valeur hautes performances basé sur la mémoire, largement utilisé dans le cache, la file d'attente de messages, les statistiques en temps réel et d'autres domaines. Il fournit une multitude de structures de données, telles que des chaînes, des hachages, des listes, des ensembles et des ensembles ordonnés, etc., qui peuvent répondre aux besoins de divers scénarios.
2. Indexation de texte
Avant de créer un moteur de recherche en temps réel, vous devez d'abord indexer les articles par texte. L'indexation de texte utilise un algorithme spécifique pour extraire les mots-clés des articles et créer une structure de données d'indexation afin de trouver rapidement des articles connexes.
Ici, nous utilisons une méthode simple de segmentation de mots, en utilisant les espaces dans l'article comme séparateurs pour extraire chaque mot.
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. Moteur de recherche
Avec l'index de texte, vous pouvez créer un moteur de recherche en temps réel. Le cœur du moteur de recherche en temps réel est de faire correspondre les mots-clés saisis par l'utilisateur avec l'index inversé pour trouver des articles pertinents.
// 搜索引擎 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. Mises à jour en temps réel
Dans l'application réelle, les articles peuvent être ajoutés, supprimés ou modifiés. Afin de conserver l'index en temps réel, l'index doit être mis à jour à temps lorsque les articles changent.
// 添加文章 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); }
Conclusion :
Cet article utilise Redis et JavaScript pour créer un moteur de recherche simple en temps réel. En créant un index de texte et un index inversé, la fonction de récupération rapide des articles est réalisée. Dans le même temps, lorsque les articles changent, l'index peut être mis à jour en temps réel, conservant ainsi la nature temps réel du moteur de recherche. Ce moteur de recherche en temps réel basé sur Redis et JavaScript peut être appliqué à divers scénarios dans lesquels un grand nombre d'articles doivent être récupérés rapidement, améliorant ainsi l'expérience utilisateur et la vitesse de réponse du système.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!