There were multiple calls made to the cleaning method that were unnecessary since it is useful only on the last call.
It allows to simplify code by returning values ealier.
I figured that the code for the search could be extracted from the context to have separation of concern.
It supports multiple keywords. It suports also multiple tag keywords.