Skip to content

Instantly share code, notes, and snippets.

@paulvstheworld
Forked from Apophenia/string_search.js
Last active August 29, 2015 13:57
Show Gist options
  • Select an option

  • Save paulvstheworld/9560591 to your computer and use it in GitHub Desktop.

Select an option

Save paulvstheworld/9560591 to your computer and use it in GitHub Desktop.
// lol global
var index = {};
function add(content, page) {
words = content.trim().split(" ");
index[page] = {};
for (var i = 0, len = words.length; i<len; i++) {
index[page][words[i]] = true;
}
}
function search(query) {
var result = [];
words = query.trim().split(" ");
for (var key in index) {
if (containsAll(words, index[key])) {
result.push(key);
}
}
return result;
}
function containsAll(words, page) {
for (var i = 0, len = words.length; i<len; i++) {
if (!!page[words[i]]) {
return false;
}
}
return true;
}
// TESTS
add("puppies kittens", 9);
add("kittens", 10);
add("puppies", 8);
add("dog cat", 6);
console.log("printing index");
console.log(index);
console.log("just puppies:")
console.log(search(" puppies"));
console.log("just kittens");
console.log(search("kittens "));
console.log("puppies and kittens:");
console.log(search("puppies kittens"));
console.log(search("hot dog"));
console.log(search("cat dog"));
console.log(search("puppies"));
console.log("OLD TESTS better return true or we're really in trouble :c");
console.log(containsAll(["my","milkshake"],{my: true, milkshake: true, brings: true, all: true}));
console.log(containsAll(["milkshake"],{milkshake: "milkshake"}));
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment