On the front end, it's easy——Add a couple lines to a configuration file, make a couple images, and it's done.
The difficult part is that the search is not optimized to be RAM-efficient; each city takes between two and ten gigabytes of RAM. You also need to have several hundred thousand tile images, which are commercially available, but not free.
If you've got a hefty server and the images, then it takes about a computer-day to compute the features and create the search index.