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

时间:2012-02-02 19:00:33

标签: sqlite icu

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

我只需要使用标记生成器就可以进行整理。似乎所有这些角色转换可能都不是必需的。在17MB,它太胖了!对于所有数据库,我们使用

PRAGMA encoding = UTF8;

数据自定义程序链接:http://apps.icu-project.org/datacustom/

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

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

  • Charset映射表(4585 KB)< - ax?
  • Break Iterator(1747 KB)< - 似乎我需要这个
  • Collat​​ors(3362 KB)< - 似乎我需要这个用于排序(但可能不是)
  • 基于规则的数字格式(292 KB)< - ax?
  • 音译器(555 KB)< - ax?
  • 格式化,显示名称和其他本地化数据(856 KB)< - ax?
  • 杂项数据(5682 KB)< - ax?
  • 基础数据(311 KB)< - 似乎是基本的

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

  

除了转换表之外,大部分数据都在整理中   适用于东亚语言。您可以删除这些的排序规则数据   从那些语言中删除Collat​​ionElements条目   source / data / locales / * .txt文件。 当你这样做时,整理为   这些语言将与Unicode排序规则相同   算法

这似乎“足够好”。

排名

  

从版本1.8开始,ICU整理服务已更新为   完全符合Unicode归类算法(UCA)   (http://www.unicode.org/unicode/reports/tr10/)并符合ISO   14651.使用这些标准中定义的校对算法有几个好处。一些更重要的好处   包括:

     

Unicode包含大量字符。这可能会很困难   用于整理是快速操作或需要整理使用   重要的内存或磁盘资源。 ICU校对实施   设计为快速,占用内存小,高度高   可定制的。

     

算法由专家设计和审查   多语种整理,因此是健全和全面的。

     

共享已排序数据但不同意数据方式的应用程序   应该被命令无法正确执行。通过遵守   UCA / 14651校准标准,自主开发   应用程序,例如用于电子商务的应用程序,对数据进行相同的排序   并正确执行。

     

ICU整理服务还包含几项增强功能   在UCA中不可用。例如:

     

附加案件处理:ICU允许忽略案例差异或   翻转。大写字母可以在小写字母之前排序,或者   反之亦然。

     

轻松定制:可轻松定制服务以满足广泛需求   整理要求范围。

     

灵活性:ICU提供排序密钥生成和快速增量   字符串比较。它还提供对排序数据的低级访问   通过collat​​ion元素迭代器(§)

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 个答案:

答案 0 :(得分:2)

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

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

  • Charset映射表
  • 其他数据

我必须包含 Collat​​ors ,但只包含我支持的语言。

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