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

Таблицы символов и файлы стоп-слов по умолчанию

author image
View as markdown

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

При первоначальном анализе текста документа 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.

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

Мы выполнили эту работу за вас, подготовив таблицы наборов символов по умолчанию для языков, не относящихся к CJK, и для языков CJK. В большинстве случаев этих таблиц должно хватить. Они основаны на данных свёртывания символов 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, так и с остальными языками, следует задать параметры в файле конфигурации, как показано ниже:

charset_table     = non_cjk

...

ngram_len         = 1

ngram_chars     = cjk

Если вам не нужна поддержка языков CJK, можно просто опустить параметры 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 одной командой в Linux или macOS:

curl https://manticoresearch.com | sh

Для расширенных вариантов установки см. полное руководство по установке и документацию .

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