I’m using Virtual DJ, which actually has a nice search function already (and it’s getting improved in VDJ8).
Furthermore I’m often using the automatic genre boxes when I’m constructing a playlist. If you have some genres that you like to combine in your playlists, it’s also possible to add multiple genres to a song (for example add a Top40 genre in addition to Dance, HipHop etc to have easy access to all your Top40 songs).
When building a playlist I almost always sort my music by key, as I’m very keen on having a harmonic mix. Mixing mostly Drum and Bass makes it somewhat easier because the BPM is always close enough to not worry about that.