The table with all the options makes a lot of sense to me. At a glance I completely agree with the order you put there.
We could maybe add a hint (new column?) to indicate when this option is applied. I can think of several big "boxes" to put all these options:
- cirrus: pre-parsing/munging (question mark stripping, could probably be merged with the next one )
- cirrus: parsing (nothing there yet)
- cirrus: query building (nothing there yet, example features: relax the constraint of the default AND operator)
- elastic: language analysis/stemming/...
- cirrus: fallback methods: all the other options, quote stripping, language/keyboard detection
I think the stopping criteria make sense only for fallback methods. Today the strategy is to stop after the first fallback method regardless of its success.
It's hard to tell if we can try again and again: e.g. quote stripping did not yield new results should I try a second fallback methods? if yes should I try the next fallback with the original query or with the quotes stripped?