This is mostly my misunderstanding of catenateAll="1" as I thought it would break down with an OR using the full concatenated word.
Thus: Jokers Wild -> { jokers, wild } OR { jokerswild } But really it becomes: { jokers, {wild, jokerswild}} which will not match. And if you have a mistyped camel case like: jOkerswild -> { j, {okerswild, jokerswild}} again no match. So it really requires some way to append the full word as an OR so: {j, {okerswild}} OR {jokerswild} severalTokensAtSamePosition=true is in the source code (QueryParser) as a boolean flag which always ends up true in these cases and triggers creating a MultiPhraseQuery as in the examples above. To really get this right I'll need to do a custom QueryParser IMO.