≫ NLP и токенизация

Токенизация данных

Manticore не хранит текст точно таким, каким он является, для полнотекстового поиска. Вместо этого он разбивает текст на слова (называемые токенами) и строит несколько внутренних структур для обеспечения быстрого полнотекстового поиска. Эти структуры включают словарь, который помогает быстро проверить, существует ли слово в индексе. Другие структуры отслеживают, в каких документах и полях содержится слово, и даже где именно в поле оно появляется. Все это используется во время поиска для нахождения релевантных результатов.

Процесс разбивания и обработки текста таким образом называется токенизацией. Токенизация происходит как при добавлении данных в индекс, так и при выполнении поиска. Она работает как на уровне символов, так и на уровне слов.

Токенизация на уровне символов

На уровне символов допускаются только определённые символы. Это контролируется с помощью charset_table. Все остальные символы заменяются пробелом (который рассматривается как разделитель слов). charset_table также поддерживает такие операции, как преобразование символов в нижний регистр или замену одного символа на другой. Она также может определять символы для игнорирования, объединения или обработки как границу фразы.

Токенизация на уровне слов

На уровне слов движок использует настройку min_word_len, чтобы определить минимальную длину слова (в символах), которое должно индексироваться.

Manticore также поддерживает сопоставление слов в разных формах. Например, чтобы считать "car" и "cars" одним и тем же словом, вы можете использовать морфологические процессоры.

Если вы хотите, чтобы разные слова рассматривались как одно — например, "USA" и "United States" — вы можете определить их с помощью функции word forms.

Обработка распространённых и «шумных» слов

Очень распространённые слова (например, "the", "and", "is") могут замедлять поиск и увеличивать размер индекса. Вы можете отфильтровать их с помощью стоп-слов. Это может ускорить поиск и уменьшить размер индекса.

Более продвинутый метод фильтрации — это биграммы, которые создают специальные токены, объединяя распространённое слово с редким. Это может значительно ускорить поиск по фразам, в которых участвуют распространённые слова.

HTML-контент

Если вы индексируете HTML, обычно лучше не включать HTML-теги в индекс, так как они добавляют много лишнего содержимого. Вы можете использовать очистку HTML, чтобы убрать теги, но при этом индексировать определённые атрибуты тегов или полностью пропускать некоторые элементы.

Ограничение длины токена

Имейте в виду, что в Manticore максимальная длина токена после нормализации составляет 42 байта. Любой токен длиннее этого будет обрезан. Это ограничение действует и при индексации, и при поиске, поэтому оно влияет и на проиндексированные данные, и на поисковые запросы.

Исключение составляют таблицы, использующие dict=keywords_32k. В них можно индексировать нормализованные токены длиной до 32768 байт в обычных и RT-таблицах. Токены длиннее 32768 байт пропускаются с предупреждением, а не индексируются как обрезанные термы.

Длинные токены keywords_32k индексируются как исходные токены. Токены длиной более 42 байт после нормализации не проходят стемминг или лемматизацию. Токены длиной до 42 байт по-прежнему могут использовать настроенную морфологию.

Сниппеты и подсветка по-прежнему используют обычное ограничение на длину токена. Токены длиной до 42 байт можно подсвечивать; более длинные токены keywords_32k пропускаются обработкой сниппетов и подсветки.

Last modified: June 17, 2026