Use list of associated tids to match rather than substring.
Performance improvement: resources stored on app scope; no need to update on each digest.
Calculate popular categories on the fly.