首页 文章

在SQLite中仅使用UTF8编码,我可以从ICU数据集中删除什么?

提问于
浏览
1

ICU提供了一种减少.dat文件大小的方法 . 我几乎可以肯定我不需要大多数默认的编码 . 如果我想专门为sqlite构建一个CJK .dat文件,我可以删除哪些文件 .

我只需要令牌器工作和可能的整理 . 似乎所有这些角色转换可能并非真的有必要 . 在17MB,它太FAT了!对于所有数据库,我们使用

PRAGMA encoding = UTF8;

数据定制器链接:http://apps.icu-project.org/datacustom/

换句话说,如果我在SQLite中使用UTF8进行整理和索引,那么我真正需要哪些部分的dat文件呢?我敢打赌,大多数人从未使用过 . 我怀疑我不需要Charset Mapping Tables,也许不需要一些Misc数据 .

ICU. 该工具将生成一个只能与4.8系列ICU一起使用的数据库 . 帮助页面提供了有关如何使用此工具的信息 .

  • 字符集映射表(4585 KB)< - ax?

  • Break Iterator(1747 KB)< - 好像我需要这个

  • Collators(3362 KB)< - 似乎我需要这个用于排序(但可能不是)

  • 基于规则的数字格式(292 KB)< - ax?

  • Transliterators(555 KB)< - ax?

  • 格式化,显示名称和其他本地化数据(856 KB)< - ax?

  • 杂项数据(5682 KB)< - ax?

  • 基础数据(311 KB)< - 似乎是基本的

Update. 除了Base Data和Break Iterator之外,似乎可以删除所有内容 . 关于来自http://userguide.icu-project.org/icudata的Collators:

转换表以外的大部分数据都是针对东亚语言的整理 . 您可以通过从那些source / data / locales / * .txt文件中删除CollationElements条目来删除这些语言的排序规则数据 . 执行此操作时,这些语言的排序规则将与Unicode排序规则算法相同 .

这似乎“足够好” .

On Collation

从版本1.8开始,ICU归类服务更新为完全符合Unicode归类算法(UCA)(http://www.unicode.org/unicode/reports/tr10/)并符合ISO 14651标准 . 使用这些标准中定义的校对算法有几个好处 . 一些更重要的好处包括:Unicode包含大量字符 . 这可能使校对很难成为快速操作或需要整理以使用大量内存或磁盘资源 . ICU校对实施设计速度快,占用内存小,可高度定制 . 算法由多语种整理专家设计和审查,因此具有强大和全面的特点 . 共享已排序数据但未就如何订购数据达成一致的应用程序无法正确执行 . 通过符合UCA / 14651标准的整理,独立开发的应用程序,例如用于电子商务的应用程序,对数据进行相同的排序和正确执行 . ICU整理服务还包含一些UCA中没有的增强功能 . 例如:附加案件处理:ICU允许忽略或翻转案例差异 . 大写字母可以在小写字母之前排序,反之亦然 . 轻松定制:可轻松定制服务以满足各种整理要求 . 灵活性:ICU提供排序密钥生成和快速增量字符串比较 . 它还通过collation元素迭代器(§)提供对排序规则数据的低级访问

Update2. 如果从.dat中删除了Break Iterator,则会发生以下情况:

sqlite> CREATE VIRTUAL TABLE test USING fts4(tokenize=icu);
sqlite> CREATE VIRTUAL TABLE testaux USING fts4aux(test);
sqlite> .import test.csv test
Error: SQL logic error or missing database

1 回答

  • 2

    (我们正在谈论Data Customizer页面 . )

    我从最大的项目开始,并且能够完全省略这些:

    • Charset映射表

    • 其他数据

    我必须包括 Collators ,但只包括我支持的语言 .

    我试图修剪 Break Iterator ,但它破了,所以我就在那里停了下来 . 没有别的东西差不多了 .

相关问题