A search system for software patterns based on pattern rank