I had that issue about 5 years after I became digital. I had just saved the files in large folders without really organizing them.
Eventually I just bit the bullet. I first took the files and sorted them into folders by year. (I took the dates from the EXIF data so I could use the date taken rather than the last date the file was written). That divided the pile up into smaller piles that I could work on individually.
I then started with the earliest files and just went through and looked at them. Tried to determine what they were about (places, events, people, whatever). I then placed them into folders labeled with the appropriate place, event, or people. Those folders were subfolders of the year folder and when I decided where a file should go I moved it into the subfolder. When there were no image files left in the date folder, all the photos had been moved into folders with a label on them so I could look for subjects. I would then go to the next year's folder.
In the process I tried to delete duplicates. When there were a lot of files that wasn't always practical, but I did manage to reduce the total volume of images a bit.
I started with about 55,000 photos. When I finished I had spent about 6 weeks on the project, working in my spare time, which I managed to find about 2 hours/day. I tried to do it all at once so it got done. If I do a year here and a year there I forget where I left off. But you can take as much time as needed by splitting it up into manageable bits.
Going forward, my photos are now organized in Lightroom, which uses keywords in addition to folder names to further refine the search abilities. Lightroom has the capacity to place photos in collections. The collections are all virtual, so no photos are moved. A photo can be in more than one collection without duplicating it so I can have a collection of all my photos with some given individual in it, or all my photos of some particular place, or some particular event or any combination of those.
I also got Downloader Pro, which allows me to rename my files at import time so all my current files have descriptive file names as well as being stored in folders with descriptive names.
My naming convention is described
here, but it's probably more than you want to know at this point.