Manipulate token positions in analyzer

I have a compounder token filter that decompunds German words during search time. Decompouder places all resulting tokens on same postition e.g.

hammerstiel(1) -> hammerstiel(1), hammer(1) and stiel(1)

If someone searches for "hammerstiel" I want to return all product that contain hammer AND stiel (not necessary "hammerstiel"). If I use default decompouder that puts all tokens on same position then this search would return all products that have "hammer" OR "stiel".

How can I manipulate token position during search time? Or I can configure match query somehow?
Any relevant link on token positions and their influence during search would be helpful.