Explorer Search Tool

Screenshots

Video Demo

Demo compiling the program and running some test searches on an index with 5.2 million files (above average).

Technical Notes

This program was written from scratch in C++, and uses minimal dependencies. A full list of dependencies is shared below.
Of the ~18k lines of code in the codebase, I wrote around 80%+ of the code, and designed the majority of the program.

Currently, this program is on Windows only.
Dependencies:

How it Works

This program operates on Windows only, and directly parses the drive's master file table on each drive.

The essential file information (the parent ids, object name, and modtime) are then stored in dense arrays in the order they are discovered.
The strings are packed into a single memory array backed by a VirtualAlloc-backed memory arena, which can flexibly expand and contract as needed.
Insertions and deletions are tricky because of the SoA data storage, so every time we remove an entry, we add it to a separate free list pointing to the open locations
Every 3 seconds we apply USN Journal changes to make modifications to the database
For quick launching of applications, we have a separate commonly used list of applications, which I can search and launch separately using the 'Enter' key
I also implemented fuzzy string search algorithm for the primary search

Limitations: Currently the main limitation is the storage of data in structures of arrays, meaning that string lookups are extremely fast, but insertions and deletions are particularly slow and cause memory fragmentation and caching issues.
An alternative strategy is to just rebuild the indexes from scratch after a certain number of files have been modified. This is energy intensive, but rebuilding the indices only takes ~2 seconds on modern hardware, and on SSDs can be done at a rate of ~1-2 million files per second.