### 编写词库

由于 Rime 的设计，拼音词库中并不适用非拼音编码：

```yaml
hello	hello
世界	s j
蒙奇·D·路飞	meng qi d lu fei
非拼音编码	asdasdasd
```

Rime 在部署时会综合词库中所有音节和拼写规则生成一个映射表，如果开启了简拼，过多的英文单词会导致打字时极其卡顿。上面单个的编码也会导致 `s`、`j`、`d` 结尾时无法响应超级简拼。

英文建议放到英文方案，非常规的注音建议放到自定义短语 `custom_phrase.txt`。

词库默认的列是：

```yaml
---
name: 词库名
version: "版本号"
sort: by_weight（按权重排序） | original（按码表顺序排序）
columns:    # 不写 columns 属性时，默认顺序为：
  - text    # 词汇
  - code    # 编码
  - weight  # 权重
  - stem    # 造词码（不知道是啥，好像和拼音方案没有关系）
...
你好	ni hao	123
```

对于没有注音，又想设置权重的词库文件，修改列即可：

```yaml
---
name: xxx
version: "1"
sort: by_weight
columns:
  - text    # 词汇
  - weight  # 权重
...
你好	123
```



  **简单来说：你输入第二部分的编码（拼音）就会在候选栏中显示第一部分的文字或内容。同拼音，就会以第三部分的权重进行排须，越大越优先。**

### 挂载自己的词库

词库文件以 `.dict.yaml` 结尾。

词库由具体方案指定：

```yaml
# rime_ice.schema.yaml

translator:
  dictionary: rime_ice # 挂载词库文件 rime_ice.dict.yaml
```

可以把所有词条堆在这个文件，也可以将这个文件作为一个入口，通过 `import_tables` 再挂载多个词库：

```yaml
# rime_ice.dict.yaml

---
name: rime_ice
version: "1"
import_tables:
  - mydict            # 挂载配置目录下的 mydict.dict.yaml
  - cn_dicts/mydict2  # 挂载 cn_dicts/ 目录下的 mydict2.dict.yaml
...
# mydict.dict.yaml

---
name: mydict
version: "1"
sort: by_weight
...
你好	ni hao	1
世界	shi jie	1
```

词库名 `xxx.dict.yaml` 和词库中的属性 `name: xxx` 可以不同，但建议设置为一样的。

其他类型的词库，可以通过 [一些脚本](https://github.com/lewangdev/scel2txt) 或 [深蓝词库转换 ](https://github.com/studyzy/imewlconverter)转为 Rime 格式的。







### 自定义文本

在 `custom_phrase.txt` 中可以放置一些特定的词汇与编码，比如输入 vmail 得到自己的邮箱，输入 vphone 得到手机号，输入 vuser 得到用户名等等。

我自己的理解：每个方案都有一个主翻译器，例如拼音；也可以增加一个次翻译器，例如英文；还可以再增加其他的，例如自定义文本。

`custom_phrase.txt` 文件内的字词会占据最高权重，即排在候选项的最前面。（默认是这样的，但可以通过 `initial_quality` 调整各个翻译器的权重）

自定义文本不与其他翻译器互相造词，如果使用了完整编码，那么这个字或词将无法参与造词，即自造词无法被记住。

> 所以建议只固定非完整编码的字词，「的de」应为「的d」，「是shi」应为「是s」，「仙剑xianjian」应为「仙剑xj」。
>
> 注意全拼的 `a o e` 也是完整拼写，不宜将 `a o e` 的单字写进自定义文本，否则「啊 哦 呃」无法进行造词。

💡 置顶已经由 `pin_cand_filter.lua` 实现，可参与造词。





