Tencent / wcdb

WCDB is a cross-platform database framework developed by WeChat.
Other
10.84k stars 1.41k forks source link

版本兼容 unknown tokenizer: WCDB #1183

Closed nchkdxlq closed 2 months ago

nchkdxlq commented 2 months ago

The language of WCDB

Objective-C

The version of WCDB

v2.1.7

The platform of WCDB

iOS

The installation of WCDB

Carthage

What's the issue?

WCDB版本从v1.0.7版本升级到 v2.1.7版本,fts报错,错误信息:[ERROR: 1, unknown tokenizer: WCDB]

v1.0.7版本时配置

  1. 属性设置

    WCDB_VIRTUAL_TABLE_MODULE(SearchFTSPersistent, WCTModuleNameFTS3)
    WCDB_VIRTUAL_TABLE_TOKENIZE(SearchFTSPersistent, WCTTokenizerNameWCDB)
  2. 创建搜索前设置分词

    [db setTokenizer:WCTTokenizerNameWCDB]; 
    [db createVirtualTableOfName:tableName  withClass:SearchFTSPersistent.class]

    v2.1.7版本时配置

  3. 属性设置

    WCDB_VIRTUAL_TABLE_MODULE(WCTModuleFTS3)
    WCDB_VIRTUAL_TABLE_TOKENIZE(WCTTokenizerLegacyOneOrBinary)
  4. 创建搜索前设置分词

    [db addTokenizer:WCTTokenizerLegacyOneOrBinary]
    [db createVirtualTable:tableName  withClass:SearchFTSPersistent.class]

问题:在旧版使用v1.0.7版本创建的fts搜索表,升级到 v2.1.7版本,访问fts搜索表一直报错,错误信息:[ERROR: 1, unknown tokenizer: WCDB]。

https://github.com/Tencent/wcdb/issues/632 https://github.com/Tencent/wcdb/issues/775

上面两个issue回答没有解决我的问题,再帮忙看看我从旧版升级到新版后,在设置上是否有什么遗漏或调用顺序上是否问题,非常感谢。

Qiuwen-chen commented 2 months ago

You can give me a demo project to reproduce it.

nchkdxlq commented 2 months ago
[db setCipherKey:password andCipherPageSize:1024 andCipherViersion:WCTCipherVersion3];
// ⚠️⚠️⚠️提前设置分词, 设置密钥后要立即设置分词,设置分词前不能有任何设置操作,否则fst异常⚠️⚠️⚠️
[db addTokenizer:WCTTokenizerLegacyOneOrBinary]; 

设置密钥与设置分支之间不能有任何操作,包括([db setTag:100]), 否则fst搜索会报错 [ERROR: 1, unknown tokenizer: WCDB]

虽然目前不影响搜索,但是每次初始化搜索db时还是会有一次 [ERROR: 1, unknown tokenizer: WCDB] 报错。

Qiuwen-chen commented 2 months ago
[db setCipherKey:password andCipherPageSize:1024 andCipherViersion:WCTCipherVersion3];
// ⚠️⚠️⚠️提前设置分词, 设置密钥后要立即设置分词,设置分词前不能有任何设置操作,否则fst异常⚠️⚠️⚠️
[db addTokenizer:WCTTokenizerLegacyOneOrBinary]; 

设置密钥与设置分支之间不能有任何操作,包括([db setTag:100]), 否则fst搜索会报错 [ERROR: 1, unknown tokenizer: WCDB]

虽然目前不影响搜索,但是每次初始化搜索db时还是会有一次 [ERROR: 1, unknown tokenizer: WCDB] 报错。

You can ignore it.