Google lets you create custom search engines, by defining a list of sites and web pages that are experts on a topic. For example, you love poetry and you know a great deal of sites that aggregate poetry. Compile a list of those sites (you can also use URL patterns to better describe the pages) and create a poetry search engine.
For the moment, Google doesn't aggregate all the custom search engines (I made a simple tool for that), but here's an idea that could improve search results. Google likes to use OneBox results to glue information from different sources. A OneBox for custom searches could match your query with the most popular custom search engines based on their description, their most frequent queries and their list of sites. Then it could show the top results from these search engines for that query.
This concept of custom search engines might replace web directories, that can't scale because of the exponentially growth of the web pages and the limited number of editors. With custom search engines, anyone could become an editor for his/her topics of interest.
Here's an interesting description of Google Directory, a Google product that searches the sites listed by Open Directory Project, which is now almost obsolete:
"Google's directory engine also lets you search within a category once you've decided on the specific subsection of the web that interests you. In this way, you'll get only responses that fall within that category. For example, you may want to search for teams named Cougars within the college basketball section of the directory only, instead of across the entire web."
Instead of creating hierarchical categories, Google could use the labels you can attach to each site.