Improve contains queries.
If we are searching for 2 characters or less, we assume substring matches anywhere don't make much sense, so we use whole word matching via the relatively fast bif:contains. If we are looking for longer substrings, we can search for the substring anywhere, using a regex filter, or for the substring at the start of words, using a faster regex that limits to word boundaries. The later is useful in particul for address completion, which is a frequent enough special case to warrant optimizing it a bit. REVIEW: 104338
Showing with 34 additions and 15 deletions