This is a table a made for myself after investigating the best way to implement autocomplete for our app:
differentiate between Query Suggestion and Search
| UseCase | Completion S. | Context S. | Term S. | Phrase S. | search_as_you_type | Edge N-Gram |
|---|---|---|---|---|---|---|
| Basic Auto-Complete | X | X | X | X | ||
| Flexible Search/Query | X | X | ||||
| High Performace for Large Datasets | X | X | X | X | ||
| Higher Memory Usage | X | X | X | |||
| Higher Storage Usage | X | X | ||||
| Substring Matches | X | X | ||||
| Dynamic Data Updates | X | X | X | X | ||
| Relevance Scoring | X | X | X | X | ||
| Spell Correction | X | X | ||||
| complexity to implement | low | high | medium | high | low | medium |
| Speciality | fast prefix matching | context-aware suggestions | single term corrections | multi term corrections | implements edge n-gram, full text partial matching |