Instead of the "forward" approach I suggest a "back-end" approach: if the best a browser can do is hand you a boatload of possibilities, maybe the browser should supply you with tools to refine those possibilities. One idea along these lines is to consider your list of results as a series of entries in a relational database, and let you refine the list with, say, SQL-like commands. For example:
DELETE ALL ENTRY IN RESULTS IF ENTRY.sequence > 1000;
-- Limits further operations to the first 1000 results. Note this doesn't delete the actual pages (!), just the entries in the "database" of search results.
FOR ALL ENTRY IN RESULTS IF "clinton" IN ENTRY.url AND "Hillary" IN ENTRY.text THEN DELETE ENTRY;
-- Gets rid of all pages containing "Hillary" if the url contains "clinton". Yes, it's a lot of typing but the browser saves all commands and you can create a file that is auto-executed for every search result, if it means that much to you.
FOR ALL ENTRY IN RESULTS IF ENTRY.date > '2014/06/20' and ENTRY.date < '2014/12/21' THEN PASS ELSE DELETE ENTRY;
-- Removes everything except pages made in Summer/Fall of 2014. It must have been a very good year.
And so on.
About half of the
Probably what's needed is a research project that identifies what kind of properties are useful in the "results database". No need to build your own search engine -- just send a search command to Google (under program control) and harvest the results, building the "results database". It's not that hard. Building an SQL-like command parser isn't that difficult either, assuming knowledge of lex and yacc, or the like. It's a bit more difficult to figure out what properties and commands are useful. (If any!)
Summer Of Code, anyone?