Provide some "term vs substring" support for the Ferret engine
Summary:
Ref T12819. Distinguishes between "term" queries and "substring" queries, and tries to match them correctly most of the time. For example:
- example matches "example", obviously.
- ~amp matches "example", but amp does not.
- examples matches "example" through stemming.
- "examples" does not match "example" (quoted text does not stem).
- "an examp" does not match "an example" (quoted text is still term text).
- ~"an examp" matches "an example" (quoted, substring-operator text uses substring search).
Test Plan: Ran searches similar to the above, they seemed to do what they should.
Reviewers: chad
Reviewed By: chad
Maniphest Tasks: T12819
Differential Revision: https://secure.phabricator.com/D18500