Repository navigation
query language
Если вы работаете с max через ИИ-агента, учить этот язык не нужно: скажите обычными словами, что
ищете, и запрос составит агент. Эта страница — для тех, кто набирает поиск сам, и для тех, кому нужен
каждый фильтр: точные операторы, все поля, preset, правила дат и пределы.
Это справка по запросам max personal search messages, max personal search mail, max personal search all, max personal stats messages show, сохранённых
поисков и --filter поиска по темам. Примеры на каждый день — в
поиске сообщений.
Термины этой страницы:
-
Запрос — текст, который вы ищете, например
счёт from:me date:7d. -
Поле — имя с двоеточием, которое относит часть запроса к одному свойству сообщения:
from:(отправитель) илиdate:(когда отправлено). Слова без поля ищутся в тексте сообщения. -
Оператор — слово или знак, который соединяет условия:
AND,OR,NOT. - Формы слова — одно слово с разными окончаниями: «квартира» и «квартиру».
Язык — строгий профиль синтаксиса Apache Lucene: слова, фразы, AND/OR/NOT, группы, поля, диапазоны, ограниченные шаблоны и регулярные выражения. «Строгий» значит, что всё неподдерживаемое — ошибка, а не молча пропущенная часть. Полная справка содержит генерируемые таблицы полей, операторов, preset и пределов и проверяемые примеры; техническая спецификация описывает грамматику и компилятор.
Для почты chat: и --chat выбирают цепочку по id или теме письма, а from: — отправителя.
У почты нет полей kind: и topic:.
| Нужно | Пишите |
|---|---|
| сообщения со всеми этими словами, в любой форме | счёт оплачен |
| эти слова подряд, в этом порядке | "счёт оплачен" |
| одно слово или другое, без третьего | (кафе OR библиотека) NOT шумно |
| только эта форма слова |
exact:квартира, или --exact для всех слов без поля |
| слова, которые начинаются на что-то | квартир* |
| отправитель, чат, вид чата |
from:me, chat:"Книжный клуб", kind:private
|
| период |
date:7d, date:[2026-01-01 TO 2026-02-01}
|
| файлы по имени или размеру |
filename:*.pdf, size>10MB
|
| текст, похожий на пароль, карту или телефон |
preset:secret, preset:card
|
| ваши собственные метки | tag:work |
| шаблон | text:/pass(port)?/ |
Слова и фразы без поля ищут формы слов. --exact выбирает точные формы для слов без поля; явное
text: продолжает искать формы. Какие формы совпадают, решают настройки языка архива
(формы слов).
| Оператор | Пример | Значение |
|---|---|---|
| слова | счёт оплачен |
оба слова |
| фраза | "счёт оплачен" |
слова в этом порядке |
AND, &&
|
alpha AND beta |
оба |
OR, ||
|
alpha OR beta |
любое |
NOT, !, -
|
alpha NOT beta |
первое без второго |
+ |
+alpha OR beta |
alpha обязательно, beta — нет |
| группа | (alpha OR beta) gamma |
скобки задают порядок |
| группа поля | from:(alice OR bob) |
поле относится к каждому значению |
| диапазон | date:[2026-01-01 TO 2026-02-01} |
[ ] включают, { } исключают, * — без границы |
| сравнение |
size>10MB, date>=7d, date:>=7d
|
открытый диапазон; запись с двоеточием — то же самое |
| шаблон |
квартир*, т?кст
|
* — любые символы, ? — один |
| regex | text:/pass(port)?/ |
ограниченное регулярное выражение Lucene |
alpha OR beta gamma означает (alpha OR beta) AND gamma; alpha OR beta AND gamma —
alpha OR (beta AND gamma). Для ясности ставьте скобки. and, or, not строчными — обычные слова.
Запрос из одного NOT ничего не находит: добавьте положительное условие, например
kind:group NOT preset:secret. Нечёткий поиск ~, близость слов, веса и интервалы дают ошибку, а не
пропускаются. Опечатки не исправляются: чтобы поймать разные окончания, пишите шаблон вроде квартир*.
| Поле | Что находит | Пример |
|---|---|---|
text |
слова сообщения (поле по умолчанию) | text:счёт |
exact |
точная форма слова или фразы |
exact:квартира, exact:"счёт оплачен"
|
body |
весь исходный текст, с учётом регистра | body:/.*счёт.*/ |
from |
отправителя: по имени, @username или id; me — вы |
from:"Алиса Тестова" |
chat |
чат: по названию, @username или id | chat:"Книжный клуб" |
date |
когда отправлено |
date:today, date:7d, date:[2026-01-01 TO 2026-02-01}
|
kind |
вид чата: private, group, channel, saved, bot, service, unknown
|
kind:private |
has |
attachment, link, file, photo, image, video, audio, voice, sticker, contact, location, poll
|
has:file |
topic |
одну ветку обсуждения; нужен один чат | chat:"Книжный клуб" AND topic:42 |
in |
какие аккаунты: провайдер или bots
|
in:bots |
preset |
текст, похожий на секрет или контакт | preset:secret |
content |
сохранённый текст вложения | content:договор |
filename |
имя вложенного файла целиком | filename:*.pdf |
mime |
тип вложенного файла; MAX его не сообщает | mime:image |
size |
размер вложенного файла: байты или KB/MB/GB по 1024 | size>10MB |
tag |
ваша локальная метка на сообщении, его чате или отправителе | tag:work |
Имена полей различают регистр. Неизвестное поле, значение или сочетание — ошибка, а не пустой ответ и не обычный текст. Имя, которого нет в архиве, у MAX не спрашивается.
kind:bot выбирает чат с ботом, in:bots — архивы ботов max sales bot. topic: требует ровно одного
чата в chat: или --chat: номера веток повторяются в разных чатах. filename, mime и size
подходят сообщению, если подходит хотя бы один его файл. MAX не сообщает тип файла, поэтому mime:
здесь ничего не находит — ищите по расширению.
Preset находит текст по его виду. С ним можно найти пароль, код или номер карты, который кто-то прислал.
| Preset | Кандидат — это |
|---|---|
password |
подпись пароля и значение после неё |
code |
подпись кода подтверждения и 4–8 цифр |
api-key |
подпись ключа API и значение |
secret |
подпись пароля, секрета, токена или ключа API и значение |
card |
13–19 цифр, можно с пробелами или дефисами |
bank |
значение вида IBAN |
passport |
подписанный номер паспорта или российский вид 4+6 цифр |
phone |
международный телефон с плюсом |
email |
адрес электронной почты |
telegram-link |
ссылка t.me или telegram.me |
url |
ссылка HTTP(S) |
contact |
вложение-контакт, email или телефон |
location |
вложение-место или ссылка geo: |
Preset сообщает кандидата по виду. Он не проверяет пароль, карту или документ и может совпасть с безобидным текстом. Не удаляйте и не пересылайте сообщения автоматически по его ответу.
--timezone принимает пояс IANA, например Europe/Madrid; без него берётся пояс компьютера, и ответ
его называет. Дата без времени — весь календарный день. Включающая верхняя граница включает день
целиком, исключающая — исключает; день перехода на летнее время длится 23 или 25 часов.
date:today и date:yesterday — календарные дни. date:7d — от 7 дней назад до сейчас (также 30m,
2h); date>=7d и date:[30d TO 7d} работают в сравнении и диапазоне, отсчёт — от момента запроса.
Точное время пишите в кавычках, с секундами и смещением: date>="2026-01-01T10:00:00+02:00".
Перед индексом и поиском текст приводится к нижнему регистру и теряет ударения; ё становится е,
й — и. Поэтому некоторые разные слова совпадают: мой находит и «мои». Regex и шаблоны по text:
приводятся так же.
text:/счёт/ совпадает с целым словом «счёт», но не со «счётом». body:/счёт/ совпадает только с
сообщением, весь текст которого — «счёт», с учётом регистра; чтобы найти где угодно, пишите
body:/.*счёт.*/, а для начала предложения — body:/.*[Сс]чёт.*/. Это синтаксис регулярных
выражений Lucene, без lookaround, обратных ссылок, якорей и флагов JavaScript.
На большом архиве короткий шаблон вроде к* раскрывается больше чем в 10 000 слов и отвергается —
удлините его. Длинные запросы, глубокая вложенность, большие шаблоны и медленный перебор отвергаются
ошибкой query_limit, а не обрезаются: сузьте чат, даты или шаблон.
max personal search messages --regex 'invoice\s+\d+' --json--regex — отдельный режим. Слова после команды — одно регулярное выражение JavaScript, а не запрос
на этом языке. Оно не учитывает регистр, проверяется на полном тексте каждого сохранённого сообщения и
выполняется в изолированном процессе с пределами времени и размера. Сохранённый поиск хранит свой
--regex; добавить --regex при запуске с --saved нельзя.
--json возвращает { items, page, limit, hasMore, corrections, completeness, wordsReady, query, coverage },
даже без совпадений. --jsonl выдаёт только сообщения, построчно.
-
query— версия языка, часовой пояс и порядок. -
coverage— какие аккаунты и чаты просмотрены.lastSyncedAt— самое старое время, когда чат из охвата скачивалmessages sync;null, если хотя бы один не скачивался ни разу.inventoryCompleteзначит, что каждый аккаунт охвата хотя бы раз передал полный список чатов; полноту истории это не обещает. -
completeness— по каждому чату: доходит ли сохранённая история до начала и есть ли пропуски. -
wordsReady— достроен ли индекс слов. Приfalseзапрос со словами даётindex_not_readyи команду, которая его достроит,max personal store migrate; запрос без слов работает. -
hasMoreговорит о странице, а не о том, есть ли в MAX ещё.
Ошибка указывает место в запросе и подсказку.
Когда агент ищет через MCP-сервер max, max_read (command: "search messages") принимает запрос как
text или как синтаксическое дерево с версией в ast (не оба сразу), а timezone — календарный пояс.
chat принимает id или сохранённое название; source, newest, context и limit работают как
опции команды; saved запускает сохранённый поиск. thread, thread_hops, thread_messages,
thread_bytes, thread_within и sync_first соответствуют опциям --thread… и --sync-first;
sync_first доступен только при messages.sync-first: allow. Ответ содержит те же поля, что --json.
max_read (command: "stats messages show") считает по тем же запросам. record: false не записывает
вызов в историю запросов.
- Поиск сообщений — поиск на каждый день, сохранённые поиски и подсчёт.
- Поиск по темам — найти обсуждение по смыслу, когда слов не помните.