I have an elasticsearch v2.x cluster with a "tags" index that contains about 5000 tags: `{tagName, tagID}`. Given a string, is it possible to query the tags index to get all tags that are found in that string? Not only do I want exact matches, but I also want to be able to control for fuzzy matches without being too generous. By too generous, a tag should only match if all tokens in the tag are found within a certain proximity of each other (say 5 words).

For example, given the string:

```
Model 22340 Sound Spectrum Analyzer

```

The following tags should match:

`sound analyzer` `sound` `spectrum` `analyzer`

BUT NOT

`sound meter` `light spectrum` `chemical analyzer`