Search: Swap in fulltext, allow querying by time range, clamp start_time and limit #2252
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Part of #2243.
Who is this PR for?
educators
What problem does this PR fix?
Searching notes didn't work with case mismatches, and didn't do any processing like stemming. It also didn't allow setting the time range, and would let clients query for all data.
What does this PR do?
First, it uses Postgres fulltext operators for matching text instead of LIKE. This includes stemming and filtering stop words. There's no ranking; all results are still time-ordered. I looked at websearch_to_tsquery which would be great but this is new in Postgres 11. It was just released as beta on Heroku, but this requires a database migration so cutting it from this PR.
Second, it allows searching by time range, defaulting to just the school year.
Third, the server clamps the time range that the client sends and the limit that it sends as well.
Screenshot (if adding a client-side feature)
Checklists
Which features or pages does this PR touch?
Does this PR use tests to help verify we can deploy these changes quickly and confidently?