javascript - 使用 JavaScript 忽略 "a"、 "the"等的字符串搜索

标签 javascript node.js

我正在寻找类似的东西:

if(magicSearch("hot pizza","We sell pizza that is really hot") {//Found!}

如果两个词都出现(任何顺序),我只想要一个“true”,我希望它忽略要搜索的文本中的“a”、“and”、“the”等内容。

(我确信有更好的术语来解释我在找什么)

我见过各种数据库引擎支持这种类型的文本搜索(例如 Mongodb),但我需要一种简单的 JavaScript 方法来测试字符串。我可以构建它,但感觉它一定已经存在于某处。

格雷格

最佳答案

您可以在一个简单的循环中使用 indexOf 函数。

//Use this if you don't need to find exact matches of words
function magicSearch(needles, haystack) {
    var searchTerms = (needles instanceof Array) ? needles : [needles];
    for(var i = 0; i < searchTerms.length; i++) {
        if(haystack.indexOf(searchTerms[i]) === -1) {
            return false;
        }
    }
    return true;
}

//Use this if you want to find exact matches of words
function magicSearch2(needles, haystack) {
    var searchTerms = (needles instanceof Array) ? needles : [needles],
        haystackArray = haystack.split(' '),
        index, 
        found = 0;

    for(var i = 0; i < haystackArray.length; i++) {
        index = searchTerms.indexOf(haystackArray[i]);
        if(index !== -1) {
            delete searchTerms[i];
            found++;
            if(found = searchTerms.length) {
                return true;
            }
        }
    }
    return false;
}
if(magicSearch(["hot", "pizza"],"We sell pizza that is really hot") {
    console.log("FOUND");
}
if(magicSearch2(["hot", "pizza"],"We sell pizza that is really hot")) {     
    console.log("FOUND");
}

关于javascript - 使用 JavaScript 忽略 "a"、 "the"等的字符串搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17961361/

相关文章:

javascript - 单击链接时终止垂直滚动?

javascript - 获取格式为 2016-01-01T00 :00:00. 000-00:00 的日期

javascript - 如果 Mocha 测试花费的时间短于给定的时间段,我如何才能失败?

javascript - Reactjs 状态初始化一个值数组

javascript - Jade 包括和 block

node.js - 是否有必要使用 joi 和 mongoose 验证相同的模式以防止插入未经验证的数据?

sql-server - 在 Nodejs 中使用批量插入查询和 Seriate 模块

javascript - 使用 javascript 添加计算器

javascript - 为什么在这个 Backbone todo-mvc 示例应用程序中需要 'apply'?

javascript - 为什么我不能直接将 document.getElementById 分配给不同的函数?