Starting with 2017 Week 35, a new fulltext search engine (the "Ferret" engine) is available in Maniphest.37, It currently appears in the UI as {nav Query (Prototype)}:a new fulltext search engine (the "Ferret" engine) has replaced the older MySQL FULLTEXT engines.
{F5161583, size=full}**Operations Impact**
With some more work - After upgrading, search indexes must be rebuilt.
- In some cases, Phabricator may require significantly more database disk space than before.
- Some fulltext-related features have changed in a way that is not backwards compatible, the hope is that this field can replace the {nav Contains Words} field and fix a number of issues associated with it.and may need adjustment to upgrade to the newer features.
- See below for more details and discussion.
**New Features and Motivation**
These are new features the engine adds:
- (T6721) You can search a particular field, like task titles, with `title:platypus`.
- You can search for a substring with the `~` operator, like `~latypu`.
These are the bugs and issues this engine aims to address:
- (T12819) InnoDB FULLTEXT scalability issues. This was the largest single motivation for these changes. See this task for more details and technical discussion.
- (T12928) No support for very short terms like "v0.1".
- (T12443) Searches where more than 1,000 documents matched the query terms could return too few results.
- Searches could fail to find documents if some terms were only in the title while others were only in the description.
This engine is a prototype, so the field only appears if you enable the `phabricator.show-prototypes` in Config. Additionally, you must rebuild the task search index before it will work:**Upgrading**
```This engine has replaced the older engines, and search indexes must be rebuilt. The UI should notify you about this. See T11932 for details and guidance on rebuilding the index.
Note that the Ferret engine requires significantly more disk space for indexes than the older fulltext engines did: in extreme cases, total database storage may expand by 400% when the index is rebuild (for example, from 10GB to 50GB). For most installs with non-pathological data, a 25%-50% increase is probably a much better estimate. Make sure you have a comfortable amount of free space before upgrading. (Some of this space will be reclaimed in the future, but for now we are also retaining the older indexes in case we need to revert parts of this.)
**Compatibility Breaks**
The new Ferret engine fulltext fields have replaced some older similar fields. The new fields are more powerful, so it didn't make sense to retain the old fields. Specifically:
- The `"fullText"` parameter to `maniphest.query` is no longer supported. Use `maniphest.search` with the `"query"` constraint instead.
$ ./bin/search index --type task --background --force - The "Contains Words" field in Maniphest has been replaced with the new "Query" field. Saved searches which used a "Contains Words" constraint may need to be updated.
``` - The "Name Contains" field in Diffusion repository search has been replaced with the new "Query" field. Saved searches which used a "Name Contains" constraint may need to be updated. Note that the "Query" field searches descriptions (not just repository names), so you may need to use `title:...` to closely replicate the old field behavior.
Once you complete these steps, the field should function. The behavior can also be tested on this installIn followup changes, which has an up-to-date index and prototypes enabledsome other "Name Contains" fields (or other fields with similar behavior) may also be replaced with "Query" fields.