How to Design a Hash Function
Study how your keys are distributed
Try to include all important information in a key in the construction of its hash
Try to make “neighboring” keys hash to very different places
Prune the features used to create the hash until it runs “fast enough” (very application dependent)