首页 > 解决方案 > 检查 mysql 数据库中单词的字符串。(即时的)

问题描述

我有一个存储单词的 mysql 数据库。现在我想检查一个字符串,看看它是否包含数据库中的一个或多个单词。

例如:

var desc = 'you are a stupid man';

db.connect((err) => {
    if(err){
        throw err;
    }
    console.log('Connected!');

    let sql = 'SELECT `word` FROM `words`';
    db.query(sql, (err, result) => {
        if(err){
            throw err;
        }
        if(desc.toLowerCase().includes(result)){
            console.log('Dont use words like {word*}');
        }
    });

});

*单词/找到的单词。

实际上我只需要将mysql数据库的单词存储在一个数组中吗?但我只是不知道它是如何工作的。也许这是非常简单的事情,我只是没有进入我的脑海。

该方法还必须允许当我将一个新词插入数据库时​​,它也会被搜索,即使不重新启动脚本

问候,美国国立卫生研究院

标签: javascriptmysqlnode.jsdatabase

解决方案


这是一个有趣的挑战,它教会了你数据库和应用程序的分离性质。

您的脚本(如果使用数据库)将自动提取新记录(使用查询),因此无需担心搜索所有项目。除非您将结果存储在变量/缓存中,但我假设您每次都使用新查询。

您可以保存一个表:banned_words具有 ID 和 VARCHAR 列,然后在其中插入任何新的禁用词。

您可以在此处利用 MySQL,并使用以下查询:

SELECT * FROM words WHERE `word`='*{word}*'

我已经阅读了评论中的答案,它更具体到你的问题,如果你有一个字符串数组,在这里使用 IN 会是一个更好的选择

这可能不是确切的语法(自从我使用 SQL 以来已经有一段时间了),但是应该为您指明正确的方向。尽可能使用您的数据库,您可以直接使用它来查找您需要的确切数据(IE 是否存在单词?)。

甚至可以确定使用类似查询存在多少行,而无需实际检索数据。(如果您基本上使用条件,则不需要变量中的数据)。


推荐阅读