⚠️ Эта страница автоматически переведена, и перевод может быть несовершенным.

Использование Manticore Search с документами на китайском, японском и корейском языках

author image

Внимание: эта статья устарела. Актуальную информацию смотрите по ссылке.

О языках CJK

В языках CJK более 40 000 иероглифов. Большинство из них - китайские. Иногда встречается аббревиатура CJKV. Буква “V” здесь обозначает вьетнамский язык.

В языках CJK используются:

  1. Для китайского языка: hànzì – традиционные китайские иероглифы; Bopomofo – китайский фонетический алфавит; Pinyin – романизация китайского языка (понятие, близкое к транслитерации).
  2. Для японского языка: Hiragana – японская слоговая азбука; Katakana – японская слоговая азбука; арабские цифры.
  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. Буквы Jamo используются для формирования слогов Hangul
2E80 .. 2EFFCJK Radicals SupplementКлюч (радикал) - элемент иероглифического алфавита, который позволяет группировать слова или служит семантическим элементом, определяющим значение следующих иероглифов.
2F00 .. 2FDFKangxi Radicalsсписок ключей Kangxi, принятый в Японии, Корее и Тайване, традиционно включает 214 знаков
3000 .. 303FCJK Symbols and PunctuationИдеографические знаки и пунктуация
3040 .. 309FHiraganaЯпонская слоговая азбука
30A0 .. 30FFKatakanaЯпонская слоговая азбука
3100 .. 312FBopomofoКитайский фонетический алфавит
3130 .. 318FHangul Compatibility Jamo
3190 .. 319FKanbun Camboon or kanbunОдин из письменных языков средневековой Японии
31A0 .. 31BFBopomofo Extended
31C0 .. 31EFCJK Strokes simple features (elements) characters
31F0 .. 31FFKatakana Phonetic Extensions
3200 .. 32FFEnclosed CJK Letters and MonthsБуквы и месяцы CJK в кружках
3300 .. 33FFCJK Compatibility
3400 .. 4DBFCJK Unified Ideographs ExtensionИдеограммы CJK
4DC0 .. 4DFFYijing Hexagram Symbols
4E00 .. 9FFFCJK Unified IdeographsИдеограммы - письменный знак, условное изображение или рисунок, а не соответствующие ему звуки речи и не целое слово
A000 .. A48FYi Syllables Yi languageЯзык провинции Южный Сычуань
A490 .. A4CFYi Radicals
AC00 .. D7AFHangul Syllables Syllables Hangul
D7B0 .. D7FFHangul Jamo Extended-B
20000 .. 2A6DFCJK Unified Ideographs Extension B
2A700 .. 2B73FCJK Unified Ideographs Extension C
2F800 .. 2FA1FCJK Compatibility Ideographs Supplement

Обратите внимание, что арабские цифры, которые могут использоваться в текстах CJK, соответствуют пробельным кодам символов (см. раздел FFF0 .. FFFF; Specials).

Здесь можно посмотреть http://www.utf8-chartable.de/ , как выглядят некоторые символы.

Как сообщить Manticore Search, что в документе есть символы CJK?

Manticore Search фильтрует тексты на уровне символов. Символы, не допускаемые к токенизации, считаются недопустимыми и заменяются пробелом, который служит разделителем. По умолчанию токенизируются только английские и русские символы (а также символ подчёркивания и буквы).

Для языков CJK характерны символы, из которых можно составлять неразделённый текст. Для таких символов Manticore может индексировать непрерывные группы этих знаков как n-grams.

В конфигурации индекса нужно настроить 3 параметра:

  1. charset_table – основной параметр для описания символов. Содержит таблицу символов и правила приведения регистра.
  2. ngram_chars – описание символов, необходимых для разбиения текста CJK на слова с помощью модели N-грамм;
  3. Установите значение 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

Установить Manticore Search

Установить Manticore Search