ios app用icu编译sqlite fts,但是当我输入像“z”这样的字母时,它无法得到完美的答案。 [英] ios app compile sqlite fts with icu,but it cant get the perfect answer when i input a letter like "z"
问题描述
在sqlite中我:
- 执行
创建虚拟MyTable(tokenize = icu,id文本,主题文字,抽象文本)
- 然后成功
插入信息MyTable(id,subject,abstract)值(?,?,?)
所以我有一行:今天天气不错fmowomrogmeog,wfomgomrg,我是谁erz
我执行从MyTable中选择id,其中MyTable匹配'z *'
它不返回任何内容,每当我搜索单个字母时它什么也不返回。但是如果我搜索'm'或'天气'或'天',它就可以。
When I perform select id from MyTable where MyTable match ‘z*’
it does not return anything,Whenever I search the single letter it returns nothing. However if I search ‘m’ or ‘天气’ or ‘天’,it works.
我知道sqlite只支持前缀,所以我使用的是ICU。我犯了错误吗?
I know sqlite only support prefix, so I am using ICU. Am I making a mistake?
注意我看过foxmail上的源代码,它看起来像我可以搜索',''f'等等。
Note I've looked at the source code on foxmail,it looks to me like I can search ',' 'f' and so on.
推荐答案
尝试海风考的角色标记器。它可以搜索前缀,后缀和其间的任何内容。它也支持中文。我认为你不能找到任何支持任意子串搜索的其他标记器。
Try Hai Feng Kao's character tokenizer. It can search prefix, postfix and anything in between. It supports Chinese as well. I don't think you can find any other tokenizers which support arbitrarily substring search.
BTW,这是一种无耻的自我推销。
BTW, it is a shameless self-promotion.
如果你想打开一个由<编码的数据库在Objective-C中code> character tokenizer,执行以下操作:
If you want to open a database encoded by character
tokenizer in Objective-C, do the following:
#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);
}
这篇关于ios app用icu编译sqlite fts,但是当我输入像“z”这样的字母时,它无法得到完美的答案。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!