My primary technique is making sure when I name something it's something I can recall. Instant search is the most efficient way to retrieve your data and it only searches on names, so I tune naming for that. I make use of contextual naming also, so if I can't think of the exact name I can search for it's parent.
For example, I have a bunch 'o SharePoint sites bookmarked. I link them to the Parent "SharePoint" and the name is "site, SharePoint". If I'm not sure of the name this means I can do an instant search on SharePoint and find all the sites listed.
Don't forget you can use multi-word search. This means I could search on "sha conn" to find the "Connectivity, SharePoint" site.
E-mails may be trickier, especially if you add a lot of them. To assist in finding them I'd go back to linked thoughts. It may be trickier to find an e-mail in instant search, but it would be a lot easier if I link it to who it came from, or a project/subject. Some sort of grouping that would make it easier to find and then drill into the e-mails.
If instant search fails, then I switch to advanced search which searches the notes, attachment text, and labels. Once I've typed it in instant search and not found it, I can access this quickly by tab-entering (or enter if you have Search first and Create second).
Here's where I can optimize my search. If I have a Type of e-mail, after the search window comes up I can click the Advanced button and choose the e-mail Thought Type from the drop-down.
Another optimization, select a parent thought you know it's under (somewhere) and click the Only Under Active check box (it only appears once you have search results in the window). Or you can run a report based on date or some other data point, choose Edit > Add Report Results to Selection and then check the Selection box in the search window.
If I had a hard time finding something via instant search, when I do find it I make sure to link to a related thought that I did come across, or include keywords in the notes or label to make sure I can find it again in the future. I optimize.
This is the main argument against a standardized (i.e. external) categorization system. If you create and prune your database so it reflects the way you think rather than trying to fit your data into a box you are making it more intuitive and your data easier to find. Or at least, this is what I've learned over the years.