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

Default charset tables and stopwords files

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

При первоначальном анализе текста документа Manticore Search должна знать, какие символы в тексте имеют смысл для дальнейшей обработки (разбиение полного текста на отдельные слова, морфологический анализ и т.д.), а какие — нет. Для определения допустимых текстовых символов используется параметр charset_table . С помощью этого параметра можно указать набор символов, с которыми вы хотите работать.

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

Особый случай составляют такие языки, как китайский, где текст не сегментирован и его трудно разбить на отдельные слова, поскольку отсутствуют явные разделители слов. («CJK» — широко используемый термин для этих языков, аббревиатура от Chinese‑Japanese‑Korean.) Для обеспечения эффективного поиска по этим языкам следует использовать параметр ngram_chars совместно с параметром ngram_len . Он рассматривает текст как набор отдельных N‑gram‑ов, каждый из которых представляет собой последовательность символов длиной, равной значению ngram_len. (В настоящее время поддерживается только ngram_len = 1.) Эти символы должны быть определены в директиве ngram_chars и не могут присутствовать в обычной charset_table.

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

Мы выполнили эту работу за вас, подготовив таблицы наборов символов по умолчанию, включающие non‑cjk и cjk‑languages соответственно. Эти таблицы должны быть достаточны в большинстве случаев. Они основаны на данных свёртывания символов ICU, которые можно увидеть здесь и определяют следующие свёртывания:

  • 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 , non_cjk.txt

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

charset_table     = non_cjk

...

ngram_len         = 1

ngram_chars     = cjk

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

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

В дополнение к перечисленным выше параметрам вы можете использовать параметр stopwords для исключения из дальнейшей обработки и индексации некоторых из самых часто встречающихся слов, которые обычно не имеют большого значения для поисковых запросов. Например, для английского языка это, вероятно, будут a, the, this, that и т.п. Чтобы включить этот параметр, создайте файл стоп‑слов и укажите путь к нему в файле конфигурации:

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 - Зулу

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

stopwords         = it

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

stopwords         = en,it,ru

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

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

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