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

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

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

Файлы стоп-слов можно создавать вручную или полуавтоматически. Индексатор предоставляет режим, который создаёт частотный словарь таблицы, отсортированный по частоте ключевых слов. Верхние ключевые слова из этого словаря обычно можно использовать как стоп-слова. Подробнее см. переключатели --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'

stopword_step

stopword_step={0|1}

Параметр position_increment в stopwords является необязательным, допустимые значения — 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}

Whether to apply stop words before or after stemming. Optional, default is 0 (apply stop word filter after stemming).

By default, stop words are stemmed themselves, and then applied to tokens after stemming (or any other morphology processing). This means that a token is stopped when stem(token) is equal to stem(stopword). This default behavior can lead to unexpected results when a token is erroneously stemmed to a stopped root. For example, "Andes" might get stemmed to "and", so when "and" is a stopword, "Andes" is also skipped.

However, you can change this behavior by enabling the stopwords_unstemmed directive. When this is enabled, stop words are applied before stemming (and therefore to the original word forms), and the tokens are skipped when the token is equal to the stopword.

‹›
  • 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: August 28, 2025