Quick terminology clarification: usually the term 'descriptor' is used to represent the network connection; maybe just 'description' would be better for the appearance characteristics? I was a little confused as to why we were talking about networking all of a sudden...
(I guess that 'description' isn't perfect either, since it's used elsewhere too...)
Anyhow -- this is actually kind of tricky because of how it appears all over the code... there might be some unintended consequences to modifying this. I don't know how the SWR version does things, but here's an overview of what SMAUG typically does.
You have two functions that are most relevant: get_char_world and get_char_room. These take a string argument and try to return a character matching the arguments. The functions try to be clever enough to first try by vnum (for imms), then by exact name, then by prefix match. They also allow for the n.x syntax to get the n^th character.
If you added a new lookup pattern to that function, you would be adding a new way to find characters (for functions that use this API, at least, which is actually most of them IIRC). So, if name lookup failed, you could try matching the supplied arguments against the descriptions of characters. I'm not sure what the best way to do this is; you might want to try it as a string literal, or as a list of characteristics for which you match as many as possible, etc.
The problem is that these functions are pretty fundamental and used all over the place. Changing them to suddenly find lots more stuff could have unintended consequences. For example, imms might start finding players where they meant to find mobs. If you do something like "cmd short" and there's a short mob in the room, but somehow you don't find it, you might end up finding a player who happens to have the term 'short' in their description. This isn't the end of the world, but it would mean you have to be careful. It might be worth only changing get_char_room and not get_char_world for this reason.