Commit Graph

9 Commits

Author SHA1 Message Date
Mike Dalessio f5305b2fe6 Use Card number as the model param
instead of the UUID `id`
2025-11-17 09:12:41 -05:00
Donal McBreen 3aa4a1a562 Shard the search index into 16 tables
Create search_index_0 to search_index_15 tables and shard each index by
account id. MySQL has no ability to pre-filter fulltext indexes by
another field so this is the best bet for improving performance.

Each fulltest index internally creates 11 sub tables (see
https://dev.mysql.com/doc/refman/8.4/en/innodb-fulltext-index.html) so
actually we have 192 tables in total here.

The search_index table name is generated dynamically based on the
account_id.
2025-11-17 09:12:17 -05:00
Donal McBreen ddd7fe082a Ensure the mentioning scope search works
Include the filter by accessible board ids to avoid large joins from the
search_index table. Drop the unused search scope.
2025-11-17 09:12:17 -05:00
Jorge Manrubia f4bd7d7a00 Remove unnecessary assignment 2025-10-16 16:05:01 +02:00
Jorge Manrubia 13135941d8 Sort search results by recency
https://fizzy.37signals.com/5986089/cards/2236/edit
2025-10-16 15:55:01 +02:00
Jorge Manrubia 7286d03f57 Format 2025-06-20 11:35:23 +02:00
Jorge Manrubia c5304870c7 Add http caching for prompts 2025-06-20 11:19:28 +02:00
Jorge Manrubia 076a30a37f More predictable approach to match cards by ID
Always place them at the top. Our current search support in SQLite is based on
standalone fields. We should add a field for IDs and make it work with prefixes. Going
with something simpler for now.

https://3.basecamp.com/2914079/buckets/37331921/todos/8773497815#__recording_8775856927
2025-06-20 06:46:21 +02:00
Jorge Manrubia 6446e5b409 Select cards with # 2025-06-19 13:00:26 +02:00