Sqlite fts4 搜索 html 编码的字符

Sqlite fts4 search html encoded character

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

غير

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

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

返回的结果对我来说很好

store
stored
storage

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

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

返回的结果

ظغير׾
֎׾غيرظ

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

غيرخ
غيرٗ

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

FTS documentation 说:

A term is a contiguous sequence of eligible characters, where eligible characters are all alphanumeric characters and all characters with Unicode codepoint values greater than or equal to 128. All other characters are discarded when splitting a document into terms. Their only contribution is to separate adjacent terms.

换句话说,像&#;这样的标点符号被完全忽略; FTS看到的是159416101585.

这三个词

在 FTS table 中,你不应该 HTML 编码任何东西;只使用纯 Unicode 字符。

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