# 使用 Manticore Search 处理中文、日文和韩文文档

#### 警告：本文内容已过时。如需获取最新信息，请[点击此处](https://manticoresearch.com/blog/new-way-of-tokenization-of-chinese/)


### 关于 CJK 语言


CJK 语言包含超过 40,000 个字符。其中大部分是中文。有时您会看到 CJKV 这个缩写。这里的“V”代表越南语。
<span id="more-196"></span>
CJK 字符包括：

1. 对于中文：汉字 – 传统汉字；注音符号 – 汉语拼音字母；拼音 – 汉语的罗马化（一个类似于音译的概念）。
2. 对于日语：平假名 – 日语假名；片假名 – 日语假名；阿拉伯数字。
3. 对于韩语：韩文（韩语字母）



此外，每种语言都有一组象形文字键（部首），它们作为在字典中查找字符的分组元素，或作为定义键后字符意义的语义元素。

要显示 CJK 语言的文本，您可以使用以下编码：Big5、EUC-JP、EUC-KR、ISO 2022-JP、KS C 5861、Shift-JIS、Unicode 等。对于 CJK 语言的字母表，有以下 Unicode 区块（<http://www.unicode.org/Public/UNIDATA/Blocks.txt>）：
<table>
<tbody>
<tr>
<td><b>范围</b></td>
<td width="150"><b>区块</b></td>
<td><b>注释</b></td>
</tr>
<tr>
<td>1100 .. 11FF</td>
<td>韩文 Jamo</td>
<td>韩文字母表中一个音节的单个字符。Jamo 字母用于构成韩文音节</td>
</tr>
<tr>
<td>2E80 .. 2EFF</td>
<td>CJK 根字补充</td>
<td>键（部首）– 象形文字字母表的一个元素，允许对词语进行分组或作为定义后续字符意义的语义元素。</td>
</tr>
<tr>
<td>2F00 .. 2FDF</td>
<td>康熙部首</td>
<td>日本、韩国、台湾采用的部首列表，传统上包括 214 个字符</td>
</tr>
<tr>
<td>3000 .. 303F</td>
<td>CJK 符号和标点</td>
<td>表意字符和标点</td>
</tr>
<tr>
<td>3040 .. 309F</td>
<td>平假名</td>
<td>日语假名</td>
</tr>
<tr>
<td>30A0 .. 30FF</td>
<td>片假名</td>
<td>日语假名</td>
</tr>
<tr>
<td>3100 .. 312F</td>
<td>注音符号</td>
<td>汉语拼音字母</td>
</tr>
<tr>
<td>3130 .. 318F</td>
<td>韩文兼容 Jamo</td>
<td></td>
</tr>
<tr>
<td>3190 .. 319F</td>
<td>汉文或 kanbun</td>
<td>中世纪日本的一种书面语言</td>
</tr>
<tr>
<td>31A0 .. 31BF</td>
<td>注音符号扩展</td>
<td></td>
</tr>
<tr>
<td>31C0 .. 31EF</td>
<td>CJK 笔画简单特征（元素）字符</td>
<td></td>
</tr>
<tr>
<td>31F0 .. 31FF</td>
<td>片假名语音扩展</td>
<td></td>
</tr>
<tr>
<td>3200 .. 32FF</td>
<td>圈内 CJK 字母和月份</td>
<td>CJK 字母和月份的圆形表示</td>
</tr>
<tr>
<td>3300 .. 33FF</td>
<td>CJK 兼容</td>
<td></td>
</tr>
<tr>
<td>3400 .. 4DBF</td>
<td>CJK 统一表意文字扩展</td>
<td>A CJK 表意文字</td>
</tr>
<tr>
<td>4DC0 .. 4DFF</td>
<td>易经卦象符号</td>
<td></td>
</tr>
<tr>
<td>4E00 .. 9FFF</td>
<td>CJK 统一表意文字</td>
<td>表意文字 – 文字符号、条件图像或图画，不是适当的语音声音，而是整个词</td>
</tr>
<tr>
<td>A000 .. A48F</td>
<td>彝语音节 彝语</td>
<td>中国四川省南部的语言</td>
</tr>
<tr>
<td>A490 .. A4CF</td>
<td>彝语部首</td>
<td></td>
</tr>
<tr>
<td>AC00 .. D7AF</td>
<td>韩文音节 音节韩文</td>
<td></td>
</tr>
<tr>
<td>D7B0 .. D7FF</td>
<td>韩文 Jamo 扩展-B</td>
<td></td>
</tr>
<tr>
<td>20000 .. 2A6DF</td>
<td>CJK 统一表意文字扩展 B</td>
<td></td>
</tr>
<tr>
<td>2A700 .. 2B73F</td>
<td>CJK 统一表意文字扩展 C</td>
<td></td>
</tr>
<tr>
<td>2F800 .. 2FA1F</td>
<td>CJK 兼容表意文字补充</td>
<td></td>
</tr>
</tbody>
</table>


请注意，可用于 CJK 文本的阿拉伯数字对应宽空格字符代码（参见 FFF0 .. FFFF；特殊字符部分）。

您可以通过 <http://www.utf8-chartable.de/> 查看某些字符的外观。


### 如何告诉 Manticore Search 您的文档包含 CJK 字符？


Manticore Search 在字符级别过滤文本。不被接受用于分词的字符被视为无效，并替换为空格，空格作为分隔符。默认情况下，只有英语和俄语字符会被分词（连同下划线和字母）。

CJK 语言具有可以形成未分段文本的字符。对于这些类型的字符，Manticore 可以将这些字符的连续组索引为 [n-gram.](https://docs.manticoresearch.com/latest/html/conf_options_reference/index_configuration_options.html#ngram-chars)

在索引配置中，我们需要调整 3 个设置：
1. [charset\_table](https://docs.manticoresearch.com/latest/html/conf_options_reference/index_configuration_options.html#charset-table) – 描述字符的主要参数。包含符号表和大小写折叠规则。
2. [ngram\_chars](https://docs.manticoresearch.com/latest/html/conf_options_reference/index_configuration_options.html#ngram-chars) – 描述需要使用 N-gram 模型将 CJK 文本拆分为单词的字符；
3. 将 [ngram\_len](https://docs.manticoresearch.com/latest/html/conf_options_reference/index_configuration_options.html#ngram-len) 的值设置为 1。这将启用 n-gram 功能。目前仅支持 1-gram（文本 "ABCDEF" \[其中 A 到 F 在 ngram\_chars 列表中\] 被索引为 "A B C D E F"）。





### 如何为参数 charset\_table 和 ngram\_chars 创建描述



> 更新：Manticore Search 的新版本引入了一个 charset_table 别名，其中包含所有所需的 CJK 字符，以及一个中文 ICU 词法分析器。如需在最新版本中处理 CJK，请阅读[以下文章](https://manticoresearch.com/blog/new-way-of-tokenization-of-chinese/)。


换句话说，如何向 Manticore Search 解释哪些 UTF-8 字符编码属于 CJK 语言家族？

您可以使用来自 [charset_tables](http://www.sphinxsearch.com/wiki/doku.php?id=charset_tables) Sphinx 维基页面的语言块集合，或使用上表中的数据以及 [charset_table](https://docs.manticoresearch.com/latest/html/conf_options_reference/index_configuration_options.html#charset-table) 中设置的规则，来描述 CJK 语言的字符和字母的选项（参见上述 1-3 项）。请特别注意并仔细检查配置文件中 Manticore Search 索引字符描述是否包含您需要的所有字符范围块。例如，如果您使用 [链接](http://www.sphinxsearch.com/wiki/doku.php?id=charset_tables "CJK sphinx index description") 上获得的字符集范围描述来索引包含傈僳语或瓦伊语的文档，搜索将无法正常工作。

特别注意正确设置 ngram_chars 参数。当在 Manticore Search 中搜索时，系统将不会将这些字符视为匹配项。


有用的链接：

<http://en.wikipedia.org/wiki/CJK>
[http://en.wikipedia.org/wiki/Chinese_character](http://en.wikipedia.org/wiki/Chinese_character)
<http://en.wikipedia.org/wiki/Pinyin>
[http://en.wikipedia.org/wiki/Space_(punctuation)](http://en.wikipedia.org/wiki/Space_%28punctuation%29)
<http://www.babelstone.co.uk/Yi/unicode.html>
