I have a few suggestions for making Shareaza more useful. Caveat: I have not read the source code. Apologies if these are either already there or not feasible.
1) as a config option: Either on a timer, or manually, send out several queries with a few random words picked from a very large dictionary, or possibly even a few arbitrary strings. Keep track of all nodes that return a file with the same size (possibly even the same filehash) for all queries. Filter all results from those nodes henceforth. (possibly even refuse to route them? )
2) offer the ability to add exclusion words (apologies if this is already available) and filter the search results according to them. Possibly at some future date enhance the protocol so that queries with exclusions can be sent via it (or can they already and I'm just missing this feature in the UI?)
3) as a config option: Keep track of which nodes return content which does not contain the search query. Filter all results from those nodes henceforth
4) Given that modern machines have a lot more memory and CPU than previous generations, can we expand the codebase so when running on high CPU / high memory machines, it creates more links and keeps a bigger routing table?
5) As a config option: add the ability to permanently filter based on keywords. I know certain keywords I do not want to see in search results - it would be great to be able to type a list in somewhere and then forget about it.
6) 'local keyword filter' - the ability to filter results by a keyword that is not sent out on the net, to help prevent the nodes that respond to every query with a filename crafted of all the keywords you sent from showing up in a search list
I am potentially willing to help write some code.