I would think shampooing every day should help. Wash it 2 times and rinse well.
Have you ever tried to rinse your hair with vinegar? I use to do this often, I would wash with shampoo, rinse, then pour apple cider vinegar onto hair (fully saturate) and massage it good into scalp and rest of hair. rinse this out then shampoo a couple more times to rid of vinegar smell. This really cleans your scalp and hair making it squeaky clean and very shiny. I would use conditioner after as well. Vinegar is a natural product and I would think it would help with odors as well.
A friend of mine used to use baking soda instead of vinegar--make a paste with b.s and water--(enough to cover entire head and scalp)--follow the steps above, except use the baking soda.
If this doesnt help, maybe you should see a dermatoligist.
If you have real thick long hair, air may not be able to circulate the scalp area making it a great place for bacteria and yeast to thrive.
Try "Prell" shampoo, it will get hair/scalp squeaky clean. Use a light conditioner such as "Feria" by Loreal in a large white tube at Sally's Beauty Supply (a little goes a long ways even on thick hair).
My daughter's long thick hair absorbs odors from places she goes, especially resturants.
Are there any other symptoms that you haven't mentioned? I would go to a doctor to get a diagnosis. It could be some sort of infection. What does your scalp look like? Have you had any hair loss? Any other medical issues or medication?
Maybe when your hair is long you are washing the ends but not the scalp as much. You have to get a good clarifing shampoo and scrup it gently into the scalp. Leave it on for a few monutes before you rinse and repeat. Your scalp may be holding more bacteria or fungus. Try using a dandruff shampoo. The only one that works for me is Sebulex. Its a sulfur/sacilic acid shampoo.