This article surface every once in a while, and I love it.
What the author suggests is very clever.
I have implemented an extended version of that in Go as an experiment.
Instead of using a trie, I used a radix tree.
Functions the same, but it's much more compressed (and faster).