Как искать длинные хеши и ID с dict='keywords_32k'
ManticoreSearch 1 час назад Как искать длинные хеши и ID с dict='keywords_32k' 7 мин 2.4K Поисковые технологии * Sphinx * Базы данных * SQL * Как искать длинные хеши и ID с dict='keywords_32k'Первоначально опубликовано...
<5 — 2026'da uzaya kaç SpaceX Starship fırlatması ulaşacak?
Значимый прорыв формирует отрасль ИИ: ManticoreSearch 1 час назад Как искать длинные хеши и ID с dict='keywords_32k' 7 мин 2. 4K Поисковые технологии * Sphinx * Базы данных * SQL * Как искать длинные хеши и ID с dict='keywords_32k'Первоначально опубликовано на 31 августа 2026Как искать длинные хеши и ID с dict=‘keywords_32k’Практическое руководство по поиску длинных хешей, event ID, message ID и email в Manticore Search: лимиты, точное сравнение, wildcard-поиск, токенизация, миграция и ограничения. Полнотекстовый поиск обычно работает с обычными словами: названиями товаров, заголовками, комментариями и описаниями.
Такие токены редко бывают длиннее нескольких десятков символов. В логах и технических данных всё иначе. SHA-256 занимает 64 символа, а идентификаторы сообщений, correlation ID, идентификаторы событий и некоторые email-адреса могут быть ещё длиннее.
Технические детали
При этом такое значение часто имеет смысл только целиком: если потерять его хвост, один ID легко спутать с другим. Для таких случаев в Manticore Search появился dict='keywords_32k'. keywords_32k доступен начиная с Manticore Search 27.
Для перевода существующей таблицы с keywords рекомендуется использовать версию 27. В чём проблема обычного словаряПо умолчанию Manticore использует dict='keywords'. Максимальная длина токена при этом составляет 42 байта после нормализации.
Важно, что речь идёт именно о байтах, а не о символах. Для ASCII один символ занимает один байт, но в UTF-8 один символ может занимать несколько байт. Если токен длиннее 42 байт, Manticore обрезает его:при индексации документа;при обработке поискового запроса.
Отраслевые последствия
Из-за этого запрос по полному значению не обязательно вернёт ноль результатов. Поскольку запрос тоже обрезается, документ может быть найден — но только по первым 42 байтам. Проблема серьёзнее, чем может показаться: два разных ID с одинаковыми первыми 42 байтами становятся неразличимыми для полнотекстового поиска.
Кроме того, найти значение по части, расположенной после 42-го байта, уже не получится. Что меняет keywords_32kdict='keywords_32k' увеличивает максимальную длину нормализованного токена до 32768 байт, то есть до 32 КБ. Поведениеdict='keywords'dict='keywords_32k'Максимальная длина токена42 байта32768 байтТокен длиннее лимитаОбрезаетсяПропускается с предупреждениемПрефиксный и инфиксный поискПоддерживаетсяПоддерживаетсяМорфология для токенов длиннее 42 байтТокен уже обрезанНе применяетсяRT-таблицыПоддерживаютсяПоддерживаютсяPlain-таблицыПоддерживаютсяПоддерживаютсяНастройка задаётся для всей таблицы:CREATE TABLE events ( message text, event_id text ) dict='keywords_32k'; Обычные короткие слова в такой таблице по-прежнему обрабатываются настроенной морфологией.
Токены длиннее 42 байт сохраняются после нормализации, но без стемминга и лемматизации. Для машинных идентификаторов это обычно именно то, что нужно: морфология для хешей и ID, как правило, просто не имеет смысла.
Событие, по словам экспертов, усилит конкуренцию в сфере ИИ.






