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

Using Manticore Search with Chinese, Japanese, and Korean language documents

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

О языках CJK

CJK languages have more than 40,000 characters. Most of them are Chinese. Sometimes you can see acronym CJKV. “V” here stands for the Vietnamese language.

CJK characters include:

  1. For the Chinese language: hànzì – traditional Chinese characters; Bopomofo – Chinese Phonetic Alphabet; Pinyin – Romanization of Chinese language (a concept close to the concept of transliteration).
  2. For the Japanese language: Hiragana – Japanese syllabary; Katakana – Japanese syllabary; Arabic numerals.
  3. For the Korean Language: Hangul (Korean alphabet)

In addition, each language has a set of hieroglyphic keys (radicals), which act as a grouping elements to search for characters in the dictionary or as a semantic elements that define the meaning of the characters following the key.

To display text in CJK languages you can use the following encodings: Big5, EUC-JP, EUC-KR, ISO 2022-JP, KS C 5861, Shift-JIS, Unicode, etc. For CJK-language alphabets there are such Unicode blocks ( http://www.unicode.org/Public/UNIDATA/Blocks.txt ):

The rangeBlockComments
1100 .. 11FFHangul JamoОдин символ из слога в корейском алфавите Хангыль. Буквы Джамо, используемые для формирования слогов Хангыль
2E80 .. 2EFFCJK Radicals SupplementКлюч (радикал) – элемент иероглифического алфавита, позволяющий группировать слова или выступающий в качестве семантического элемента, определяющего значение последующих символов.
2F00 .. 2FDFKangxi Radicalsсписок радикалов, принятых Кангси в Японии, Корее, Тайване, традиционно включает 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 MonthsCJK letters and months in circles
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

Note that the Arabic numerals, which can be used in CJK texts, correspond widespace character codes (see section FFF0 .. FFFF; Specials).

You can see here http://www.utf8-chartable.de/ how certain characters look.

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

Manticore Search filters the texts at character level. Characters not accepted for tokenization are considered invalid and replace with whitespace, which acts as separator. By default, only english and russian characters are tokenized (along with underscore and letters).

CJK languages feature characters that can form unsegmented texts. For these types of characters, Manticore can index contiguous groups of these characters as n-grams.

In the index configuration we need to adjust 3 settings:

  1. charset_table – main parameter to describe the characters. Contains a table of symbols and rules for case folding.
  2. ngram_chars – description of characters needed to split CJK text to words using the N-gram model;
  3. Set the value ngram_len to 1. This enables the n-gram feature. Currently only 1-grams are supported ( a text "ABCDEF" [where A to F are in ngram_chars list] is indexed as "A B C D E F").

Как создать описания для параметров charset_table и ngram_chars

Обновление: более новые версии Manticore Search вводят псевдоним charset_table, содержащий все необходимые символы CJK, а также китайский морфологический процессор ICU. Чтобы работать с CJK в последней версии, прочитайте следующую статью .

Иными словами, как объяснить Manticore Search, какие коды символов UTF-8 принадлежат семейству языков CJK?

Вы можете использовать наборы блоков языков со страницы вики Sphinx charset_tables или данные из таблицы выше и правила, указанные в charset_table , чтобы составить описание параметров (см. пункты 1‑3 выше) для символов и букв языков CJK. Будьте внимательны и дважды проверьте, что все необходимые блоки диапазонов символов включены в описание символов индекса Manticore Search в конфигурационном файле. Например, если вы бы

использовали описания диапазонов наборов символов, полученные по link выше для индексации документов, содержащих языки 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

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

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