Skip to main content

Module format

Module format 

Source
Expand description

词库格式契约:拼音表的命名规则,以及 msime-pinyin.db、msime-wubi.db、msime-others.db 的文件内版本(metadata 表)。dict-builder 和运行时必须对它们取得一致,所以只在这里定义一次。完整规格见 docs/data-formats.md §4、§9、§12。

Constants§

FORMAT_VERSION
词库格式版本:发布清单的 format_version 与 engine_compatibility.dictionary_format,也是 dict-builder 写进三个主库 metadata 表的 format_version。引擎读得懂这个版本及以下的文件。
LEGACY_FORMAT_VERSION
没有 metadata 表的文件按这个版本读:文件内版本出现之前发布的词库(dict-v2.0.39 及更早)都是这样,必须照常能用。
MAXIMUM_NUMBERED_SYLLABLES
Tables are numbered by syllable count up to this; longer keys go to the overflow bucket.
METADATA_FORMAT_VERSION
metadata 里存放格式版本的那一行,与语言词库同名。
METADATA_SCHEMA
三个主库的 metadata 表,形状与语言词库(language_dictionary::SCHEMA)的同名表相同:name 是键,value 是十进制文本。
OVERFLOW_BUCKET
SHIPPED_INITIALS
First letters that have tables. i, u and v start no syllable, so they have none.
TABLE_PREFIX

Functions§

build_table_name
The table for a segmented key: by segment count and the first letter of the first segment.
check_format_version
读 connection 所在文件的格式版本并检查引擎读不读得懂;file 是写进错误信息的文件名(只给名字,不带路径)。没有 metadata 表时是 LEGACY_FORMAT_VERSION。有表却读不出 format_version(没有这一行,或表的列不对)、值不是非负整数、或比 FORMAT_VERSION 新时报 DICTIONARY_FORMAT_UNSUPPORTED(EngineError::Failed),调用方不能把这样的文件当作已知格式去读:新版本的表可能换了列或换了语义,照旧读只会悄悄出错。连 sqlite_master 都读不出(不是数据库、被锁住),或读 metadata 时遇到被锁、读写出错、文件损坏这类与格式无关的错误时,原样返回 EngineError::Sqlite,由调用方按它原来对读不了的文件的处理来办。
quanpin_table
tbl_<n>_<initial>, or tbl_others_<initial> past seven syllables. None for no syllables or an initial outside a..=z. A shipped-set miss (i, u, v) still gets a name; the table simply does not exist, and readers treat that as no rows.