function StringMatcher(options) {
        this.options = options;
        this.reset();
    }
A StringMatcher provides an interface to the stringMatch function with built-in
caching. You should use a StringMatcher for the lifetime of queries over a
single data set.

You are free to store other data on this object to assist in higher-level caching.
(This object's caches are all stored in "_" prefixed properties.)

@param {{preferPrefixMatches:?boolean, segmentedSearch:?boolean}} options to control search behavior.
                 preferPrefixMatches puts an exact case-insensitive prefix match ahead of all other matches,
                 even short-circuiting the match logic. This option implies segmentedSearch=false.
                 segmentedSearch treats segments of the string specially.