为什么sqlite fts5 Unicode61令牌生成器不支持CJK(中文,日文,韩文)?

时间:2018-09-20 09:59:06

标签: sqlite unicode full-text-search fts5

我曾经认为Unicode61 Tokenizer可以支持CJK-Chinese Japanese Korean 我确认我的sqlite支持fts5

sqlite> pragma compile_options;
BUG_COMPATIBLE_20160819
COMPILER=clang-9.0.0
DEFAULT_CACHE_SIZE=2000
DEFAULT_CKPTFULLFSYNC
DEFAULT_JOURNAL_SIZE_LIMIT=32768
DEFAULT_PAGE_SIZE=4096
DEFAULT_SYNCHRONOUS=2
DEFAULT_WAL_SYNCHRONOUS=1
ENABLE_API_ARMOR
ENABLE_COLUMN_METADATA
ENABLE_DBSTAT_VTAB
ENABLE_FTS3
ENABLE_FTS3_PARENTHESIS
ENABLE_FTS3_TOKENIZER
ENABLE_FTS4
ENABLE_FTS5

但是令我惊讶的是,它根本找不到任何CJK单词。为什么会这样?

sqlite> CREATE VIRTUAL TABLE ft5_test USING fts5(content, tokenize = 'porter unicode61 remove_diacritics 1');
sqlite> INSERT INTO ft5_test values('为什么不支持中文 fts5 does not seem to work for chinese');
sqlite> select * from ft5_test where ft5_test = '中文';
sqlite>
sqlite> select * from ft5_test where ft5_test = 'Chinese';
为什么不支持中文 fts5 does not seem to work for chinese

-------------更新----------

我花了很多时间来构建ICU版本。我在这里https://stackoverflow.com/a/52866566/301513

分享了我的经验

据我了解,使用icu版本是支持CJK的唯一方法,而fts5不支持icu令牌生成器。

在这里留下我的问题,以防其他人对这个问题有新的想法。

0 个答案:

没有答案
相关问题