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

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

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

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

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

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

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

  • сведение нативных цифр ASCII

  • сведение регистра

  • сведение диакритики

  • сведение радикалов Хан

  • сведение хираганы

  • сведение катаканы

  • сведение форм букв

  • упрощенное сведение Хан

  • сведение нижнего индекса

  • сведение верхнего индекса

  • сведение ширины

Здесь вы можете увидеть исходные файлы, используемые для кодировок по умолчанию: cjk.txt , non_cjk.txt

Чтобы иметь возможность работать как с CJK, так и с не-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