pub fn tokenize_query(raw: &str) -> Vec<String>
Tokenize raw user text: split on whitespace/punctuation, lowercase, keep alnum/_/-/:/.