This document discusses search engines and how they work. It begins by explaining why custom search engines are built, such as to keep data local and customized or to improve performance. It then covers how search engines create indexes of terms mapped to document IDs to enable fast lookups. Building an index requires preprocessing documents through steps like tokenization, normalization, and filtering. The quality of search results depends on the preprocessing being identical for queries and documents. Open source tools can help build search indexes, while challenges include dealing with the tradeoffs of space, complexity and preprocessing time required for fast searches.