Online Search Engine

Online Search Engine 333gle is a secure, multi-threaded, HTTP-based online search engine, featuring fast index search, internal logging, context previews and more.

Duration: 2021.09 - 2021.12 (11 weeks)

My Role: software developer

Tool: C, C++, Boost Framework, Make, Valgrind, Linux Server, Git

This is a system programming course project from the Paul G. Allen School of Computer Science and Engineering at University of Washington.

There are in total 4 parts of the project.

  • part 1: designing and developing underlying data structures - a doubly linked-list and a chained hash table in C.
  • part 2: use the LinkedList and HashTable module from part 1 to implement a file system crawler, indexer, and search engine following industry standard C practices.
  • part 3: takes an in-memory inverted index from the previous indexer and writes it out to disk in an architecture-neutral format. Then implement lookup functionality that walks through an on-disk index to service the lookup. Finally, develope a query processor that serves queries from multiple on-disk indices.
  • part 4: accept the HTTP connection requests from the client and handle them in a multi-threaded way. Then parse the request headers and serve the it based on static files or external web links. Finally, perform security enhancements by eliminating cross-site scripting and directory traversal attacks.

Additional Features:

  • Full dark-mode support
  • Keyword context previews
  • Internal Logging using Boost.Log

Demo video for the 333gle online search engine