0

我正在编写一个字典项目。它可以将英语翻译成阿拉伯语或将阿拉伯语翻译成英语。单词存储在 sqlite fts4 数据库中。数据库中存储的 html 中的阿拉伯字母编码如下

غير

当我使用英语到阿拉伯语的 fts4 查询语法时,例如 => stor

SELECT * FROM fts_dic WHERE english MATCH '"^stor*"';

返回的结果对我有好处

store
stored
storage

但是当我在阿拉伯语到英语中搜索 => غير

SELECT * FROM fts_dic WHERE english MATCH '"^غير*"';

返回结果

ظغير׾
֎׾غيرظ

但我想看到结果只从我搜索的 html 编码文本开始,比如

غيرخ
غيرٗ

如您所见,我在单词的开头使用“^”来获得此结果。英语到阿拉伯语工作正常,但阿拉伯语到英语不能正常工作。

4

1 回答 1

1

FTS 文档说:

术语是符合条件的字符的连续序列,其中符合条件的字符是所有字母数字字符和 Unicode 代码点值大于或等于 128 的所有字符。在将文档拆分为术语时,所有其他字符都将被丢弃。他们唯一的贡献是分离相邻的术语。

换句话说,像这样&#;的标点符号完全被忽略了;FTS 看到的是1594,1610和三个词1585

在 FTS 表中,您不应该对任何内容进行 HTML 编码;只需使用普通的 Unicode 字符。

此外,^仅适用于 FTS4 表(可能并非在所有 Android 版本中都可用)。

于 2015-07-29T08:40:36.337 回答