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"

查看:170
本文介绍了ios app用icu编译sqlite fts,但是当我输入像“z”这样的字母时,它无法得到完美的答案。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在sqlite中我:


  1. 执行创建虚拟MyTable(tokenize = icu,id文本,主题文字,抽象文本)

  2. 然后成功插入信息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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆