Используя только кодировку UTF8 в SQLite, что я могу удалить из набора данных ICU? - PullRequest
1 голос
/ 02 февраля 2012

ICU позволяет сократить размер файла .dat.Я почти уверен, что мне не нужно большинство кодировок по умолчанию.Если я хочу создать файл CJK .dat специально для sqlite, который я могу вырезать.

Мне просто нужен токенайзер для работы и, возможно, сортировка.Кажется, что все эти преобразования символов могут не быть необходимыми.На 17 МБ это слишком толстый!Для всей базы данных мы используем

PRAGMA encoding = UTF8;

Ссылка настройщика данных: http://apps.icu -project.org / datacustom /

Чтобы выразить это иначе, если яИспользуя UTF8 в SQLite для сопоставления и индексации, какие части файла DAT мне действительно нужны?Бьюсь об заклад, большинство никогда не используется.Я подозреваю, что мне не нужны таблицы сопоставления Charset, и, возможно, не некоторые из данных Misc.

ICU. Этот инструмент создаст библиотеку данных, которую можно использовать только с 4.8серия реанимации.Страница справки содержит информацию о том, как использовать этот инструмент.

  • Таблицы сопоставления кодировок (4585 КБ) <- ax? </li>
  • Итератор разбиения (1747 КБ) <- похожеМне нужно это </li>
  • Сборщики (3362 КБ) <- похоже, мне это нужно для сортировки (но, возможно, нет) </li>
  • Числовой формат на основе правил (292 КБ) <- ax? </li>
  • Транслитераторы (555 КБ) <- ax? </li>
  • Форматирование, отображаемые имена и другие локализованные данные (856 КБ) <- ax? </li>
  • Разные данные (5682 КБ) <- ax? </li>
  • Базовые данные (311 КБ) <- кажется базовым </li>

Обновление. Кажется, что можно удалить все, кроме Базовых данных иПерерыв Итератор.Относительно сборщиков из http://userguide.icu -project.org / icudata :

Большая часть данных, кроме таблиц преобразования, находится в сопоставлении для языков Восточной Азии.Вы можете удалить данные сопоставления для этих языков, удалив записи CollationElements из этих файлов source / data / locales / *. Txt. Когда вы это сделаете, параметры сортировки для этих языков станут такими же, как и для алгоритма сортировки Unicode.

Это кажется "достаточно хорошим".

При сопоставлении

Начиная с выпуска 1.8, служба сортировки ICU обновлена, чтобы полностью соответствовать алгоритму сопоставления Unicode (UCA) (http://www.unicode.org/unicode/reports/tr10/) и соответствует ISO 14651. ТамЕсть несколько преимуществ использования алгоритмов сопоставления, определенных в этих стандартах.Вот некоторые из наиболее значительных преимуществ:

Юникод содержит большой набор символов.Это может усложнить быструю операцию сортировки или потребовать, чтобы сортировка использовала значительные ресурсы памяти или диска.Реализация сортировки ICU спроектирована так, чтобы быть быстрой, иметь небольшой объем памяти и быть легко настраиваемой.

Алгоритмы были разработаны и проверены экспертами по многоязычному сопоставлению, и, следовательно, являются надежными и всеобъемлющими.

Приложения, которые совместно используют отсортированные данные, но не согласны с тем, как данные должны быть упорядочены, не работают должным образом.В соответствии со стандартом UCA / 14651 для сопоставления, независимо разработанные приложения, такие как используемые для электронного бизнеса, сортируют данные одинаково и работают правильно.

Служба сортировки ICU также содержит несколько улучшений, которые недоступны в UCA.Например:

Дополнительная обработка регистра: ICU позволяет игнорировать или отображать различия регистра.Прописные буквы можно сортировать перед строчными или наоборот.

Простая настройка: службы могут быть легко адаптированы для удовлетворения широкого диапазона требований к сортировке.

Гибкость: ICU предлагает оба ключа сортировкигенерация и быстрое добавочное сравнение строк.Он также обеспечивает низкоуровневый доступ к данным сопоставления через итератор элемента сопоставления (§)

Update2. Если итератор разрыва удаляется из .dat, происходит следующее:

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 голосов
/ 02 февраля 2012

(речь идет о странице Data Customizer .)

Я начал с самых крупных элементов и смог полностью их опустить:

  • Таблицы сопоставления кодировок
  • Разные данные

Мне пришлось включить Коллатеры , но только языки, которые я поддерживал.

Я пыталсяtrim Break Iterator , но он сломался, поэтому я на этом остановился.Ничто другое не так велико.

...