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

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

При первоначальном анализе текста документа 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, которые можно увидеть здесь и определяют следующие сглаживания:

  • сглаживание обычных цифровых знаков

  • сглаживание регистра

  • сглаживание диакритических знаков

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

  • сглаживание хираганы

  • сглаживание катаканы

  • сглаживание буквенных форм

  • упрощенное сглаживание Хан

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

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

  • сглаживание ширины

Здесь вы можете увидеть файлы-источники, используемые для стандартных символов: 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