I'd like to convert a plain search string into a tsquery, much like plainto_tsquery(), but enabling prefix searches (:*) for every word.
I've come up with this:
select regexp_replace(
plainto_tsquery('english', 'text to search')::text,
'''(?= |$)', ''':*', 'g'
)::tsquery;
--> 'text':* & 'search':*
Is this the best way to do it, without writing C code? Can I otherwise manipulate the tsquery data structure from PL/pgSQL without converting it to/from text? Would you recommend a different approach?
-Tobia