| use marisa; |
| |
| $keyset = new marisa::Keyset; |
| $keyset->push_back("cake"); |
| $keyset->push_back("cookie"); |
| $keyset->push_back("ice"); |
| $keyset->push_back("ice-cream"); |
| |
| $trie = new marisa::Trie; |
| $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 = new marisa::Agent; |
| |
| $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 ($trie->lookup(agent)) { |
| print($agent->query_str(), ": not found\n"); |
| } |
| |
| 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"); |
| } |
| |
| $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"); |
| } |
| |
| $agent->set_query("ic"); |
| while ($trie->predictive_search($agent)) { |
| print($agent->query_str(), ": ", $agent->key_str(), " (", |
| $agent->key_id(), ")\n"); |
| } |