When search for text:seat cushion the query parser does not emit "seat cushion" or "seat cushions". Therefore the search defaults to single token based search. This will work better if you check for stemmed query tokens/phrases against stemmed versions of the phrases in autophrases.txt file when deciding to emit a phrase or a single token. I think this should happen in incrementToken() method (if I understand the code).
When search for text:seat cushion the query parser does not emit "seat cushion" or "seat cushions". Therefore the search defaults to single token based search. This will work better if you check for stemmed query tokens/phrases against stemmed versions of the phrases in autophrases.txt file when deciding to emit a phrase or a single token. I think this should happen in incrementToken() method (if I understand the code).