Commit Graph

16 Commits

Author SHA1 Message Date
Jorge Manrubia 3457c871e1 Revert "Add CJK (Chinese, Japanese, Korean) search support" 2026-01-08 21:07:14 +01:00
LU 366588e263 Add SQLite FTS5 support for CJK search
- Split each CJK character into individual tokens for FTS5 indexing
- Add stem_content callback to SQLite adapter to pre-process content
- Stem search queries before matching against FTS5 index
- Update stemmer tests to reflect character-splitting behavior

This enables CJK search on SQLite installations where the FTS5
tokenizer cannot natively segment CJK text.

🤖 Generated with [Claude Code](https://claude.com/claude-code)

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
2026-01-06 17:51:20 +09:00
Donal McBreen 13db384648 Auto default for UUID primary keys
Patch load_schmema! to set the default value for UUID primary keys. This
removes the need to patch ApplicationRecord + Rails models individually.

It also means we no longer need to patch the default in for the integer
primary key in Search::Record::SQLite.
2025-12-03 14:27:52 +00:00
Donal McBreen b571303385 Don't use Current.account for search records
It doesn't actually work, and even if we could make it work reliably
we are better off if the records always know to go to the right shard.

It does make the interface a bit more complicated as we need to select
the right shard class with `for(account_id)`.
2025-11-25 11:34:41 +00:00
Donal McBreen 6f02cb40b1 Drop unnecessary html_safes 2025-11-21 15:46:31 +00:00
Donal McBreen be0ce5efa0 Use dependant delete on fts table 2025-11-21 15:28:25 +00:00
Donal McBreen 525e53a2f7 Add FTS ActiveRecord model
Needs some special handling for the FTS virtual table format. Set the
primary key to rowid and manually specify the columns.
2025-11-21 15:21:11 +00:00
Donal McBreen ea06b2d46f Simplify and test highlighing 2025-11-21 14:25:38 +00:00
Donal McBreen 02da6dbf8f Parameterised queries 2025-11-21 12:36:45 +00:00
Donal McBreen 463a5f089a Consolidate scopes and extract search_fields 2025-11-21 12:31:25 +00:00
Donal McBreen 01d16f96d4 Remove Search::Record.for_account
Instead we'll compute the table name dynamically based on
Current.account where needed. Also we'll prevent searchable records
from being saved if Current.account is not set, otherwise the after
commit callbacks will fail.
2025-11-21 12:09:21 +00:00
Donal McBreen 2e4d0b38db Fix matching scope after merge 2025-11-21 11:43:01 +00:00
Donal McBreen 4f6ec19491 Drop comments 2025-11-21 09:15:19 +00:00
Donal McBreen 0e11a139a5 Move quoting 2025-11-21 09:15:19 +00:00
Donal McBreen 62d102578f Table name already correct 2025-11-21 09:15:19 +00:00
Donal McBreen 19b0e25eac Split sqlite/mysql record stuff 2025-11-21 09:15:19 +00:00