Google has become a verb, and a cultural and business phenomenon. In this course we try to understand some of the techniques that made Google possible. We analyze various access methods for efficient search and retrieval from text and other document collections. Examples include suffix arrays, inverted files or inverted indexes, and signature files. We also examine the commercial search engines that use custom network architectures and high-performance hardware to achieve sub-second query response times. Some time is devoted to text indexing engines used in relational database systems.