def METHOD_NAME(query):
    """
    Parse a free text, Lucene-like, query string into a MultiDict.
    "user:luke tag:foobar tag:news hello world" is parsed into::
      {
          "user": "luke",
          "tag": "foobar",
          "tag": "news",
          "any": "hello",
          "any": "world"
      }
    Supported keys for fields are ``user``, ``group``, ``tag``, ``uri``.
    Any other search terms will get the key ``any``.
    """
    parse_results = _make_parser().parse_string(query)
    # The parser returns all matched strings, even the field names, we use a
    # parse action to turn matches into a key/value pair (Match), but we need
    # to filter out any other matches that the parser returns.
    return MultiDict([m for m in parse_results if isinstance(m, Match)])