在sqlite中我:
create virtual MyTable (tokenize =icu ,id text,subject text,abstract text)insert info MyTable (id,subject,abstract) values (?,?,?)
所以我有行???????fmowomrogmeog?wfomgomrg????erz当我执行select id from MyTable where MyTable match ‘z*’它不返回任何东西?每当我搜索单个字母时它什么都不返回。但是,如果我搜索“m”或“??” 或'?'?它有效。
我知道 sqlite 只支持前缀,所以我使用的是 ICU。我犯了一个错误吗?
请注意,我已经查看了 Foxmail 上的源代码,在我看来,我可以搜索“、”、“f”等。
试试Hai Feng Kao 的字符标记器。它可以搜索前缀、后缀以及介于两者之间的任何内容。它也支持中文。我认为您找不到任何其他支持任意子字符串搜索的标记器。
顺便说一句,这是一种无耻的自我推销。
如果要character在 Objective-C 中打开由标记器编码的数据库,请执行以下操作:
#import <FMDB/FMDatabase.h>
#import "character_tokenizer.h"
FMDatabase* database = [[FMDatabase alloc] initWithPath:@"my_database.db"];
if ([database open]) {
// add FTS support
const sqlite3_tokenizer_module *ptr;
get_character_tokenizer_module(&ptr);
registerTokenizer(database.sqliteHandle, "character", ptr);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
754 次 |
| 最近记录: |