Your approach seems to be one I would use. Below is a variant you might also want to consider, where the "wildmatch string" is actually generated on the fly rather than having to type it out in the applymap/wildmatch.
Check below. I have used this "technique" to allow users to make data enrichment and custom categorisations, as well string searching for information.
Hope this adds on a new layer you can use elsewhere - although my answer to your post is a few years "late" (i.e. I was looking to see if this 'technique' was worth blogging and came across your string).
//Script start here
//2. Create a numerical equivalent for each line/string of data in table:
LOAD *, Rowno() as OrdinalPosition;
//1. Original strings against which you are trying to match:
LOAD * INLINE [
US Department of Army, u*s*d*p*t*army
//Create a field with all strings which you will put in a variable and is sequentially 'ordered' as it is in above table: