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

Предупреждение: эта статья устарела. Для получения актуальной информации, пожалуйста, последуйте по ссылке.

О языках CJK

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

Символы CJK включают:

  1. Для китайского языка: hànzì – традиционные китайские иероглифы; Bopomofo – китайский фонетический алфавит; Pinyin – романизация китайского языка (понятие, близкое к понятию транслитерации).
  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 ):

ДиапазонБлокКомментарии
1100 .. 11FFHangul JamoОтдельный символ из слога в корейском алфавите Хангыл. Буквы Jamo используются для формирования слогов Хангыл
2E80 .. 2EFFДополнение радикалов CJKКлюч (радикал) – элемент иероглифического алфавита, который позволяет группировать слова или служит семантическим элементом, определяющим значение следующих символов.
2F00 .. 2FDFРадикалы КансиСписок ключей Канси, принятой в Японии, Корее, Тайване, традиционно включает 214 символов
3000 .. 303FСимволы и пунктуация CJKИдеографические символы и пунктуация
3040 .. 309FХираганаЯпонская силлабарная система
30A0 .. 30FFКатаканаЯпонская силлабарная система
3100 .. 312FBopomofoКитайский фонетический алфавит
3130 .. 318FСовместимость Jamo Hangul
3190 .. 319FКанбун Камбун или канбунОдин из письменных языков средневековой Японии
31A0 .. 31BFРасширенный Bopomofo
31C0 .. 31EFПростые черты CJK (элементы) символов
31F0 .. 31FFФонетические расширения катаканы
3200 .. 32FFОграниченные письменности и месяцы CJKБуквы и месяцы CJK в кругах
3300 .. 33FFСовместимость CJK
3400 .. 4DBFРасширенные унифицированные идеограммы CJKИдеограммы CJK
4DC0 .. 4DFFСимволы гексаграмм И Цзина
4E00 .. 9FFFУнифицированные идеограммы CJKИдеограммы – письменный знак, условное изображение или картинка, не соответствующие звукам речи, а целому слову
A000 .. A48FСлоги И язык YiЯзык провинции Южный Сычуань
A490 .. A4CFРадикалы Yi
AC00 .. D7AFСлоги Хангул Слоги Хангул
D7B0 .. D7FFРасширенные Jamo Hangul-B
20000 .. 2A6DFРасширенные унифицированные идеограммы CJK B
2A700 .. 2B73FРасширенные унифицированные идеограммы CJK C
2F800 .. 2FA1FДополнение совместимых идеограмм CJK

Обратите внимание, что арабские цифры, которые могут использоваться в текстах CJK, соответствуют кодам символов widespace (см. раздел 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-gram;
  3. Установите значение ngram_len на 1. Это включает функцию n-gram. В настоящее время поддерживаются только 1-граммы (текст “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 , чтобы составить ваше описание опций (см. 1-3 выше) для символов и букв для языков CJK. Будьте осторожны и дважды проверьте, чтобы все блоки диапазонов символов, которые вам нужны, были включены в описание символов индекса Manticore Search в конфигурационном файле. Например, если вы будете использовать описания диапазонов наборов символов, которые вы получите по ссылке выше для индексации документов, содержащих языки Лису или Ваи, поиск не будет работать правильно.
Обратите особое внимание на правильное установление параметра 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