Игнорирование стоп-слов

Стоп-слова — это слова, которые игнорируются при индексации и поиске, обычно из-за их высокой частоты и низкой ценности для результатов поиска.

Manticore Search по умолчанию применяет стемминг к стоп-словам, что может привести к нежелательным результатам, но это можно отключить с помощью опции stopwords_unstemmed.

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

Стоп-слова не индексируются, но они влияют на позиции ключевых слов. Например, если "the" является стоп-словом, и документ 1 содержит фразу "in office", а документ 2 содержит фразу "in the office", поиск точной фразы "in office" вернет только первый документ, даже несмотря на то, что "the" пропускается как стоп-слово во втором документе. Это поведение можно изменить с помощью директивы stopword_step.

stopwords

stopwords=path/to/stopwords/file[ path/to/another/file ...]

Настройка stopwords является необязательной и по умолчанию пустой. Она позволяет указать путь к одному или нескольким файлам стоп-слов, разделенным пробелами. Все файлы будут загружены. В режиме реального времени разрешены только абсолютные пути.

Формат файла стоп-слов — это простой текстовый файл в кодировке UTF-8. Данные файла будут токенизированы с учетом настроек charset_table, поэтому вы можете использовать те же разделители, что и в индексируемых данных.

Когда активна индексация ngram_len, стоп-слова, состоящие из символов, подпадающих под ngram_chars, сами токенизируются в N-граммы. Таким образом, каждая отдельная N-грамма становится отдельным стоп-словом. Например, при ngram_len=1 и подходящих ngram_chars стоп-слово test будет интерпретировано как t, e, s, t — четыре различных стоп-слова.

Файлы стоп-слов можно создавать вручную или полуавтоматически. Индексатор предоставляет режим, который создает частотный словарь таблицы, отсортированный по частоте ключевых слов. Верхние ключевые слова из этого словаря обычно можно использовать как стоп-слова. Подробнее см. переключатели --buildstops и --buildfreqs. Верхние ключевые слова из этого словаря обычно можно использовать как стоп-слова.

‹›
  • SQL
  • JSON
  • PHP
  • Python
  • Python-asyncio
  • javascript
  • Java
  • C#
  • Rust
  • CONFIG
📋
CREATE TABLE products(title text, price float) stopwords = '/usr/local/manticore/data/stopwords.txt /usr/local/manticore/data/stopwords-ru.txt /usr/local/manticore/data/stopwords-en.txt'

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

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

‹›
  • SQL
  • JSON
  • PHP
  • Python
  • Python-asyncio
  • javascript
  • Java
  • C#
  • Rust
  • CONFIG
📋
CREATE TABLE products(title text, price float) stopwords = 'it'

Если вам нужно использовать стоп-слова для нескольких языков, вы должны перечислить все их псевдонимы, разделенные запятыми (режим RT) или пробелами (обычный режим):

‹›
  • SQL
  • JSON
  • PHP
  • Python
  • Python-asyncio
  • javascript
  • Java
  • C#
  • Rust
  • CONFIG
📋
CREATE TABLE products(title text, price float) stopwords = 'en, it, ru'

stopwords_list

stopwords_list = 'value1; value2; ...'

Параметр stopwords_list позволяет указать стоп-слова непосредственно в операторе CREATE TABLE. Он поддерживается только в режиме RT.

Значения должны быть разделены точкой с запятой (;). Если необходимо использовать точку с запятой как обычный символ, её нужно экранировать обратной косой чертой (\;).

‹›
  • SQL
  • JSON
  • PHP
  • Python
  • Python-asyncio
  • javascript
  • Java
  • C#
  • Rust
📋
CREATE TABLE products(title text, price float) stopwords_list = 'a; the'

stopword_step

stopword_step={0|1}

Параметр position_increment для стоп-слов является необязательным, допустимые значения — 0 и 1, по умолчанию используется 1.

‹›
  • SQL
  • JSON
  • PHP
  • Python
  • Python-asyncio
  • javascript
  • Java
  • C#
  • Rust
  • CONFIG
📋
CREATE TABLE products(title text, price float) stopwords = 'en' stopword_step = '1'

stopwords_unstemmed

stopwords_unstemmed={0|1}

Определяет, применять ли стоп-слова до или после стемминга. Необязательный параметр, по умолчанию 0 (применять фильтр стоп-слов после стемминга).

По умолчанию стоп-слова сами подвергаются стеммингу, а затем применяются к токенам после стемминга (или любой другой морфологической обработки). Это означает, что токен пропускается, когда stem(токен) равен stem(стоп-слово). Такое поведение по умолчанию может привести к неожиданным результатам, когда токен ошибочно сводится к стоп-корню. Например, "Andes" может быть приведено к "and", поэтому, когда "and" является стоп-словом, "Andes" также пропускается.

Однако вы можете изменить это поведение, включив директиву stopwords_unstemmed. При её включении стоп-слова применяются до стемминга (и, следовательно, к исходным формам слов), и токены пропускаются, когда токен равен стоп-слову.

‹›
  • SQL
  • JSON
  • PHP
  • Python
  • Python-asyncio
  • javascript
  • Java
  • C#
  • Rust
  • CONFIG
📋
CREATE TABLE products(title text, price float) stopwords = 'en' stopwords_unstemmed = '1'
Last modified: January 01, 2026