如果使用underscore.js,你可以有一些相對簡單的實現
var stopwords_set = ["a", "and", "the" ];
var magicSearch = function (keywords, str) {
var content_set = {};
var keywords_set = {};
_.each(keywords.split(' '), function(item){
keywords_set[item.toLowerCase()] = 1;
});
_.each(str.split(' '), function(item){
content_set[item.toLowerCase()] = 1;
});
//convert input to 2 sets excluding stop words
content_set = _.without(_.keys(content_set), stopwords_set);
keywords_set = _.without(_.keys(keywords_set), stopwords_set);
//check the intersecion
var value = _.intersection(content_set, keywords_set).length == keywords_set.length
return value;
}
magicSearch("hot pizza","We sell pizza that is really hot");
不知道是否已經存在的東西在那裏,但你可以在空白拆分第一個字符串,使用正則表達式'test'方法,如果有失敗則返回false,全部通過則返回true。至於消除「a」,「the」等停用詞,我認爲您需要創建一系列停用詞來剝離,並在測試每個單詞之前將其抽出。 – HartleySan
你想用**停用詞**列表構建啓發式搜索模塊。 – zsong
正如別人在他們的回答中所說的,'indexOf'比正則表達式'test'方法更簡單快捷。對不起,不好的建議。 – HartleySan