If thats the case, you main problem is with the speed of search using multiple *'s to cover each token space, i assume its $chr(9) for tab between them is it? (not space like you showed)

Solution one: (keep orginal hash data) [im going to assume your actually using TAB/$chr(9) to seperate data]

Search for items by simplly using $+(*,%matchtext,*) and then compare the result using IF ($+(*,$chr(9),*,$chr(9),*,$chr(9),*,$chr(9),%matchtext,$chr(9),*,$chr(9),*,$chr(9),etc etc) iswm %var)
ex
Code:
var %n = 1, %c = 0
while ($hget($hfind(TABLE,* $+ %matchtext $+ *,%n,w).data)) {
  var %match = $v1
  if ($gettok(%match,5,9) == %matchtext) {
    inc %c
    echo -a MATCH $+(chr(35),%c) BEING %match
  }
  inc %n
}

You well actually find this is alot faster than letting a complexe wildmatch using * loose on the whole hash table, your essentially going "ok take only lines with XYZ, and then wildmatch them"


Solution two (alter hash data)
isolate a character that one appear in the tokendata ever, and replace all spaces with this character, then replace it again as you pull the data out of the hash table
ex
Code:
alias spaces.to.255 { return $replace($1,$chr(32),$chr(255)) }
alias spaces.from.255 { return $replace($1,$chr(255),$chr(32)) }
var %match = $spaces.from.255($hget(TABLE,$hfind(Table,& & & & %matchtext *,1,w).data))
;and also have to use /HADD TABLE itemname $spaces.to.255(%normaldata)

I prefer the other way unless i was just starting out on the project, and thus wouldnt need to worry about pacthing existing code