| require "marisa" |
| |
| keyset = Marisa::Keyset.new |
| keyset.push_back("cake") |
| keyset.push_back("cookie") |
| keyset.push_back("ice") |
| keyset.push_back("ice-cream") |
| |
| trie = Marisa::Trie.new |
| trie.build(keyset) |
| print("no. keys: ", trie.num_keys(), "\n") |
| print("no. tries: ", trie.num_tries(), "\n") |
| print("no. nodes: ", trie.num_nodes(), "\n") |
| print("size: ", trie.io_size(), "\n") |
| |
| agent = Marisa::Agent.new |
| |
| agent.set_query("cake") |
| trie.lookup(agent) |
| print(agent.query_str(), ": ", agent.key_id(), "\n") |
| |
| agent.set_query("cookie") |
| trie.lookup(agent) |
| print(agent.query_str(), ": ", agent.key_id(), "\n") |
| |
| agent.set_query("cockoo") |
| if not trie.lookup(agent) |
| print(agent.query_str(), ": not found\n") |
| end |
| |
| print("ice: ", trie.lookup("ice"), "\n") |
| print("ice-cream: ", trie.lookup("ice-cream"), "\n") |
| if trie.lookup("ice-age") == Marisa::INVALID_KEY_ID |
| print("ice-age: not found\n") |
| end |
| |
| trie.save("sample.dic") |
| trie.load("sample.dic") |
| |
| agent.set_query(0) |
| trie.reverse_lookup(agent) |
| print(agent.query_id(), ": ", agent.key_str(), "\n") |
| |
| agent.set_query(1) |
| trie.reverse_lookup(agent) |
| print(agent.query_id(), ": ", agent.key_str(), "\n") |
| |
| print("2: ", trie.reverse_lookup(2), "\n") |
| print("3: ", trie.reverse_lookup(3), "\n") |
| |
| trie.mmap("sample.dic") |
| |
| agent.set_query("ice-cream soda") |
| while trie.common_prefix_search(agent) |
| print(agent.query_str(), ": ", agent.key_str(), " (", agent.key_id(), ")\n") |
| end |
| |
| agent.set_query("ic") |
| while trie.predictive_search(agent) |
| print(agent.query_str(), ": ", agent.key_str(), " (", agent.key_id(), ")\n") |
| end |