The ability to perform an efficient search in a complex network is of great importance in real-world systems. We suggest a method for searching for nodes when the source does not possess full information about the shortest path to the destination. By assigning new short names to nodes we are able to reduce significantly the amount of information stored at the nodes, such that the required memory needed scales only logarithmically with the network size; yet we succeed in finding the destination node through paths very close in distance to the shortest ones. The method is shown to perform particularly well on scale-free networks, exploiting its unique characteristics. This, together with other properties, makes our method extremely useful for realistic systems such as the Internet.