# Default charset tables and stopwords files

В этой статье мы расскажем о новых дополнениях в таблицах наборов символов и стоп‑словах, которые упрощают использование этих параметров при настройке индексов.


При первоначальном анализе текста документа Manticore Search должна знать, какие символы в тексте имеют смысл для дальнейшей обработки (разбиение полного текста на отдельные слова, морфологический анализ и т.д.), а какие — нет. Для определения допустимых текстовых символов используется параметр [charset\_table](https://docs.manticoresearch.com/latest/html/conf_options_reference/index_configuration_options.html#charset-table). С помощью этого параметра можно указать набор символов, с которыми вы хотите работать.

Также, для повышения качества текстового поиска, Manticore Search выполняет так называемое свёртывание символов. Например, при анализе вашего поискового запроса заглавные символы преобразуются в строчные, диакритические символы (например **â**, **ê**, **î**, **ô** и т.п.) заменяются их базовыми эквивалентами и т.д. Таблица наборов символов — это механизм, определяющий все эти преобразования.

Особый случай составляют такие языки, как китайский, где текст не сегментирован и его трудно разбить на отдельные слова, поскольку отсутствуют явные разделители слов. («CJK» — широко используемый термин для этих языков, аббревиатура от Chinese‑Japanese‑Korean.) Для обеспечения эффективного поиска по этим языкам следует использовать параметр [ngram\_chars](https://docs.manticoresearch.com/latest/html/conf_options_reference/index_configuration_options.html#ngram-chars) совместно с параметром [ngram\_len](https://docs.manticoresearch.com/latest/html/conf_options_reference/index_configuration_options.html#ngram-len). Он рассматривает текст как набор отдельных **N‑gram**‑ов, каждый из которых представляет собой последовательность символов длиной, равной значению `ngram_len`. (В настоящее время поддерживается только `ngram_len = 1`.) Эти символы должны быть определены в директиве ngram\_chars и не могут присутствовать в обычной charset\_table.

Поэтому, если вы хотите, чтобы ваш поиск поддерживал разные языки, вам потребуется определить наборы допустимых символов и правила свёртывания для всех них, что может быть довольно трудоёмкой задачей.

Мы выполнили эту работу за вас, подготовив таблицы наборов символов по умолчанию, включающие non‑cjk и cjk‑languages соответственно. Эти таблицы должны быть достаточны в большинстве случаев. Они основаны на данных свёртывания символов ICU, которые можно увидеть [здесь](http://source.icu-project.org/repos/icu/icu/tags/release-58-1/source/data/unidata/norm2) и определяют следующие свёртывания:


 - ascii native digit folding

 - case folding

 - diacritic folding

 - Han radical folding

 - Hiragana folding

 - Katakana folding

 - letterform folding

 - simplified Han folding

 - subscript folding

 - superscript folding

 - width folding



Здесь вы можете увидеть исходные файлы, используемые для наборов символов по умолчанию: [cjk.txt](https://github.com/manticoresoftware/manticoresearch/blob/master/src/charsets/cjk.txt) , [non\_cjk.txt](https://github.com/manticoresoftware/manticoresearch/blob/master/src/charsets/non_cjk.txt)

 

 Чтобы работать как с cjk, так и с non‑cjk языками, следует задать параметры в файле конфигурации, как показано ниже:

```bash
charset_table     = non_cjk

...

ngram_len         = 1

ngram_chars     = cjk


```

Если вам не нужна поддержка cjk‑languages, вы можете просто опустить параметры `ngram_len` и `ngram_chars`.

Если же вам всё ещё нужны специфические правила для определённых языков, вы можете создать соответствующие таблицы символов вручную и разместить их в файле конфигурации вместо таблиц по умолчанию.

В дополнение к перечисленным выше параметрам вы можете использовать параметр [stopwords](https://docs.manticoresearch.com/latest/html/conf_options_reference/index_configuration_options.html#stopwords) для исключения из дальнейшей обработки и индексации некоторых из самых часто встречающихся слов, которые обычно не имеют большого значения для поисковых запросов. Например, для английского языка это, вероятно, будут **a**, **the**, **this**, **that** и т.п. Чтобы включить этот параметр, создайте файл стоп‑слов и укажите путь к нему в файле конфигурации:

```bash
stopwords         = /path/to/your/stopwords/file.txt


```

Формат файла стоп‑слов — обычный текст, содержащий список всех слов, которые вы хотите рассматривать как стоп‑слова, по одному слову на строку. Чтобы создать файл стоп‑слов, ранее приходилось либо собирать его вручную, либо использовать инструмент `indexer`, который может предоставить список слов с наибольшей частотой в индексе.

Альтернативно, как и в случае с параметрами `charset_table` и `ngram_chars`, теперь вы можете воспользоваться одним из наших файлов стоп‑слов по умолчанию. В настоящее время доступны стоп‑слова для 50 языков. Ниже полный список их алиасов:

 - af - Африкаанс

 - ar - Арабский

 - bg - Болгарский

 - bn - Бенгальский

 - ca - Каталонский

 - ckb- Курдский

 - cz - Чешский

 - da - Датский

 - de - Немецкий

 - el - Греческий

 - en - Английский

 - eo - Эсперанто

 - es - Испанский

 - et - Эстонский

 - eu - Баскский

 - fa - Персидский

 - fi - Финский

 - fr - Французский

 - ga - Ирландский

 - gl - Галисийский

 - hi - Хинди

 - he - Иврит

 - hr - Хорватский

 - hu - Венгерский

 - hy - Армянский

 - id - Индонезийский

 - it - Итальянский

 - ja - Японский

 - ko - Корейский

 - la - Латинский

 - lt - Литовский

 - lv - Латышский

 - mr - Маратхи

 - nl - Нидерландский

 - no - Норвежский

 - pl - Польский

 - pt - Португальский

 - ro - Румынский

 - ru - Русский

 - sk - Словацкий

 - sl - Словенский

 - so - Сомалийский

 - st - Сото

 - sv - Шведский

 - sw - Суахили

 - th - Тайский

 - tr - Турецкий

 - yo - Йоруба

 - zh - Китайский

 - zu - Зулу



 

 Например, чтобы использовать стоп‑слова для итальянского языка, просто добавьте следующую строку в ваш файл конфигурации:

```bash
stopwords         = it

```

 

Если вам нужно использовать стоп‑слова для нескольких языков, перечислите все их алиасы, разделённые запятыми:

```bash
stopwords         = en,it,ru


```

 

Все файлы стоп‑слов по умолчанию хранятся в отдельной папке. Вы можете найти их в `/share/stopwords` внутри папки установки Manticore на Windows‑машинах и в `/usr/local/share/manticore/stopwords` на Linux‑машинах. Список всех языков, для которых предоставлены стоп‑слова по умолчанию, также можно найти в файле `languages_list.txt`.
