add cache, get__uid method
use query engine, not lexerparser