Внимание: эта статья устарела. Актуальную информацию смотрите по ссылке.
О языках CJK
В языках CJK более 40 000 иероглифов. Большинство из них - китайские. Иногда встречается аббревиатура CJKV. Буква “V” здесь обозначает вьетнамский язык.
В языках CJK используются:
- Для китайского языка: hànzì – традиционные китайские иероглифы; Bopomofo – китайский фонетический алфавит; Pinyin – романизация китайского языка (понятие, близкое к транслитерации).
- Для японского языка: Hiragana – японская слоговая азбука; Katakana – японская слоговая азбука; арабские цифры.
- Для корейского языка: 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 .. 11FF | Hangul Jamo | Отдельный знак, из которого состоит слог в корейском алфавите Hangul. Буквы Jamo используются для формирования слогов Hangul |
| 2E80 .. 2EFF | CJK Radicals Supplement | Ключ (радикал) - элемент иероглифического алфавита, который позволяет группировать слова или служит семантическим элементом, определяющим значение следующих иероглифов. |
| 2F00 .. 2FDF | Kangxi Radicals | список ключей Kangxi, принятый в Японии, Корее и Тайване, традиционно включает 214 знаков |
| 3000 .. 303F | CJK Symbols and Punctuation | Идеографические знаки и пунктуация |
| 3040 .. 309F | Hiragana | Японская слоговая азбука |
| 30A0 .. 30FF | Katakana | Японская слоговая азбука |
| 3100 .. 312F | Bopomofo | Китайский фонетический алфавит |
| 3130 .. 318F | Hangul Compatibility Jamo | |
| 3190 .. 319F | Kanbun Camboon or kanbun | Один из письменных языков средневековой Японии |
| 31A0 .. 31BF | Bopomofo Extended | |
| 31C0 .. 31EF | CJK Strokes simple features (elements) characters | |
| 31F0 .. 31FF | Katakana Phonetic Extensions | |
| 3200 .. 32FF | Enclosed CJK Letters and Months | Буквы и месяцы CJK в кружках |
| 3300 .. 33FF | CJK Compatibility | |
| 3400 .. 4DBF | CJK Unified Ideographs Extension | Идеограммы CJK |
| 4DC0 .. 4DFF | Yijing Hexagram Symbols | |
| 4E00 .. 9FFF | CJK Unified Ideographs | Идеограммы - письменный знак, условное изображение или рисунок, а не соответствующие ему звуки речи и не целое слово |
| A000 .. A48F | Yi Syllables Yi language | Язык провинции Южный Сычуань |
| A490 .. A4CF | Yi Radicals | |
| AC00 .. D7AF | Hangul Syllables Syllables Hangul | |
| D7B0 .. D7FF | Hangul Jamo Extended-B | |
| 20000 .. 2A6DF | CJK Unified Ideographs Extension B | |
| 2A700 .. 2B73F | CJK Unified Ideographs Extension C | |
| 2F800 .. 2FA1F | CJK Compatibility Ideographs Supplement |
Обратите внимание, что арабские цифры, которые могут использоваться в текстах CJK, соответствуют пробельным кодам символов (см. раздел FFF0 .. FFFF; Specials).
Здесь можно посмотреть http://www.utf8-chartable.de/ , как выглядят некоторые символы.
Как сообщить Manticore Search, что в документе есть символы CJK?
Manticore Search фильтрует тексты на уровне символов. Символы, не допускаемые к токенизации, считаются недопустимыми и заменяются пробелом, который служит разделителем. По умолчанию токенизируются только английские и русские символы (а также символ подчёркивания и буквы).
Для языков CJK характерны символы, из которых можно составлять неразделённый текст. Для таких символов Manticore может индексировать непрерывные группы этих знаков как n-grams.
В конфигурации индекса нужно настроить 3 параметра:
- charset_table – основной параметр для описания символов. Содержит таблицу символов и правила приведения регистра.
- ngram_chars – описание символов, необходимых для разбиения текста CJK на слова с помощью модели N-грамм;
- Установите значение ngram_len в 1. Это включает поддержку n-грамм. Сейчас поддерживаются только 1-граммы (текст "ABCDEF" [если A to 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 , чтобы составить описание параметров (см. 1-3 выше) для символов и букв языков CJK. Будьте внимательны и дважды проверьте, что все блоки нужных вам диапазонов символов включены в описание символов индекса 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
