The thing that I would most want to see is some way to capture multi-word matches using full-text search; "full phrase search", in effect. I can see that as the start and end of a range of internal result positions but will admit to wanting something less at risk of my arithmetic errors.
Providing access to the starts and ends may be difficult due to all the logical operators that can be used (ftor, ftand, ftnot, not in). A simple example:
let $xml := <_>a b c d</_> update {} return ft:mark($xml[text() contains text 'b c' ftand 'c d'])
We could possibly make the full data structures available that need to be internally generated. I fear people wouldn’t really work with it as they are fairly complex (a look into the specification may give you an impression of that [1]).
But thanks for your thoughts, I’ll let them grow.
[1] https://www.w3.org/TR/xpath-full-text-10/#FTOperatorsSemanticsSec