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

警告:本文档不是最新的。有关最新信息,请 点击此链接。

关于 CJK 语言

CJK 语言有超过 40,000 个字符。大多数是中文。有时你会看到缩写 CJKV。“V” 代表越南语。

CJK 字符包括:

  1. 对于中文:汉字 – 传统汉字;注音符号 – 汉语拼音字母;拼音 – 汉语的罗马化(一个接近音译的概念)。
  2. 对于日文:平假名 – 日语音节;片假名 – 日语音节;阿拉伯数字。
  3. 对于韩文:Hangul(韩文字母)

此外,每种语言都有一组象形字根(部首),作为在字典中搜索字符的分组元素,或作为定义后续字符含义的语义元素。

要显示 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 ):

范围备注
1100 .. 11FFHangul Jamo韩文 Hangul 字母中的一个音节的单个字符。用于形成 Hangul 音节的字母 Jamo
2E80 .. 2EFFCJK Radicals Supplement部首 – 象形字母的一个元素,允许单词分组或作为定义后续字符含义的语义元素。
2F00 .. 2FDFKangxi Radicals在日本、韩国、台湾采用的康熙字典部首列表,传统上包括 214 个字符
3000 .. 303FCJK Symbols and Punctuation表意字符和标点符号
3040 .. 309F平假名日语音节
30A0 .. 30FF片假名日语音节
3100 .. 312F注音符号汉语拼音字母
3130 .. 318FHangul Compatibility Jamo
3190 .. 319F汉文或汉文中世纪日本的一种书写语言
31A0 .. 31BF扩展注音符号
31C0 .. 31EFCJK 笔画简单特征(元素)字符
31F0 .. 31FF片假名音标扩展
3200 .. 32FF封闭的 CJK 字母和月份圆圈中的 CJK 字母和月份
3300 .. 33FFCJK 兼容性
3400 .. 4DBFCJK 统一表意文字扩展一个 CJK 表意文字
4DC0 .. 4DFF易经卦象符号
4E00 .. 9FFFCJK 统一表意文字表意文字 – 书写符号、条件图像或图片,不是适当的语音声音和整个单词
A000 .. A48F彝语音节南四川省的语言
A490 .. A4CF彝语部首
AC00 .. D7AF韩文音节
D7B0 .. D7FF扩展 Hangul Jamo-B
20000 .. 2A6DFCJK 统一表意文字扩展 B
2A700 .. 2B73FCJK 统一表意文字扩展 C
2F800 .. 2FA1FCJK 兼容性表意文字补充

请注意,可以在 CJK 文本中使用的阿拉伯数字对应于宽字符代码(请参见 FFF0 .. FFFF;特殊字符部分)。

你可以在这里查看 http://www.utf8-chartable.de/ 某些字符的外观。

如何告诉 Manticore Search 你的文档包含 CJK 字符?

Manticore Search 在字符级别过滤文本。未被接受进行标记化的字符被视为无效,并用空格替换,空格作为分隔符。默认情况下,仅标记化英文和俄文字符(连同下划线和字母)。

CJK 语言的特点是可以形成未分段文本的字符。对于这些类型的字符,Manticore 可以将这些字符的连续组索引为 n-grams。

在索引配置中,我们需要调整 3 个设置:

  1. charset_table – 描述字符的主要参数。包含符号和大小写折叠规则的表。
  2. ngram_chars – 描述需要使用 N-gram 模型将 CJK 文本拆分为单词的字符;
  3. 将值 ngram_len 设置为 1。这启用 n-gram 特性。目前仅支持 1-grams(文本 "ABCDEF" [其中 A 到 F 在 ngram_chars 列表中] 被索引为 "A B C D E F")。

如何为参数 charset_table 和 ngram_chars 创建描述

更新:Manticore Search 的新版本引入了一个 charset_table 别名,包含所有所需的 CJK 字符以及一个中文 ICU 形态处理器。要在最新版本中处理 CJK,请阅读 以下文章

换句话说,如何向 Manticore Search 解释哪些 UTF-8 字符代码属于 CJK 语言家族?

您可以使用 charset_tables Sphinx 维基页面中的语言块集合,或使用上表中的数据和 charset_table 中设定的规则来描述 CJK 语言的字符和字母选项(见上文 1-3)。请小心并仔细检查您所需的所有字符范围块是否包含在 Manticore Search 索引字符描述的配置文件中。例如,如果您使用在 链接 上获得的字符集范围描述来索引包含 Lisu 或 Vai 语言的文档,搜索将无法正常工作。

特别注意正确设置 ngram_chars 参数。当搜索时,Manticore Search 不会将这些字符视为搜索匹配项。

有用的链接:

http://en.wikipedia.org/wiki/CJK
http://en.wikipedia.org/wiki/Chinese_character
http://en.wikipedia.org/wiki/Pinyin
http://en.wikipedia.org/wiki/Space_%28punctuation%29
http://www.babelstone.co.uk/Yi/unicode.html

安装Manticore Search

安装Manticore Search