def METHOD_NAME(tag_prefix, query):
    """
    Parses a search query:
    <query> ::= <label> | <desc_part>
    <label> ::= <tag_prefix> <desc_part>
    returns:
    2-tuple (list of description substrings, list of labels/keywords)
    """
    if query is not None:
        tokens = re.split(r'\s+', query.strip())
    else:
        tokens = []
    query_keywords = []
    substrs = []
    for t in tokens:
        if len(t) > 0:
            if t[0] == tag_prefix:
                query_keywords.append(t[1:])
            else:
                substrs.append(t)
    return substrs, query_keywords