I found something from http://code.google.com/p/marisa-trie/
Matching Algorithm with Recursively Implemented StorAge (MARISA) is a static and space-efficient trie data structure. And libmarisa is a C++ library to provide an implementation of MARISA. Also, the package of libmarisa contains a set of command line tools for building and operating a MARISA-based dictionary.
A MARISA-based dictionary supports not only lookup but also reverse lookup, common prefix search and predictive search.
•Lookup is to check whether or not a given string exists in a dictionary.
•Reverse lookup is to restore a key from its ID.
•Common prefix search is to find keys from prefixes of a given string.
•Predictive search is to find keys starting with a given string.