For Line Files I have found the split line at point workflow to be very good for this. For example when I need to weight a spatial join, I actually break my lines into equal length segments so that when they have statistics run on them they are "approximately" weighted to the length of the line.
I have seen similar workflows with polygons where a blank fishnet is created and then intersected with the polygon layer to break it up into many pieces. In this way, on average your statistics are weighted to the larger area polygons. You dissolve at the end of this process of course in both examples. I realize this thread is old, but this method just goes in a direction opposite of a field based method (and works for ALL the fields in the database). Let me know if this makes sense.
David