Repository navigation
query language
Если вы работаете с max через ИИ-агента, учить этот язык не нужно: скажите обычными словами, что
ищете, и запрос составит агент. Эта страница — для тех, кто набирает поиск сам, и для тех, кому нужен
каждый фильтр: точные операторы, все поля, preset, правила дат и пределы.
Это справка по запросам max personal search messages, 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 и пределов и проверяемые примеры; техническая спецификация описывает грамматику и компилятор.
Почту max не ищет: это memo search mail.
| Нужно | Пишите |
|---|---|
| сообщения со всеми этими словами, в любой форме | счёт оплачен |
| эти слова подряд, в этом порядке | "счёт оплачен" |
| одно слово или другое, без третьего | (кафе 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 |
phone |
телефон, найденный в тексте, как бы он ни был записан | phone:"+34 600 000 000" |
email |
адрес почты, найденный в тексте | email:"ana@example.com" |
url |
ссылка, найденная в тексте, без параметров слежения | url:"https://example.com/a" |
domain |
сайт ссылки или адреса, найденных в тексте | domain:example.com |
mentions |
человек, организация или документ, к которому привязано найденное упоминание | mentions:"person:12" |
Имена полей различают регистр. Неизвестное поле, значение или сочетание — ошибка, а не пустой ответ и не обычный текст. Имя, которого нет в архиве, у MAX не спрашивается.
kind:bot выбирает чат с ботом, in:bots — архивы ботов max sales bot. topic: требует ровно одного
чата в chat:: номера веток повторяются в разных чатах. filename, mime и size
подходят сообщению, если подходит хотя бы один его файл. MAX не сообщает тип файла, поэтому mime:
здесь ничего не находит — ищите по расширению.
max находит в сохранённых сообщениях телефоны, адреса почты, ссылки, документы и имена людей. Эти поля
находят сообщения, в которых они есть. Сами находки показывает max personal mentions list.
max personal search messages 'phone:"+34 600 000 000"'
max personal search messages 'email:"ana@example.com" OR domain:example.com'
max personal search messages 'mentions:"person:12"'Значение с + или @ берите в кавычки: оба знака — операторы. Телефон находится, как бы он ни был
записан: +34 600 000 000 и 600000000 — один телефон, а номер без + читается по странам из настройки
phone_countries. domain: считает docs.example.com сайтом example.com. В mentions: пишут ссылку на
человека, организацию или документ; поле находит сообщения, чьи упоминания вы привязали к нему через
max mentions confirm.
max personal mentions list --new показывает нерешённое с прошлого --new, max personal mentions domains — сайты, на которые
ведут ссылки, самые частые сверху. confirm и reject с --all-in-chat решают имя сразу во всём чате.
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, а не обрезаются: сузьте чат, даты или шаблон.
--json возвращает { items, page, next, missing, meta }, даже без совпадений. --jsonl выдаёт только
сообщения, построчно.
-
missing— чего поиск не видел и почему: записьcoverage, если часть чатов не скачана или отстала,text, пока индекс слов достраивается,pictures, если модель картинок не скачана. -
next— команды, которые это исправят (messages.sync,store.migrate,models.download-image), иpage.next— следующая страница с тем же запросом. -
meta.accounts— какие аккаунты просмотрены. -
page.has_moreговорит о странице, а не о том, есть ли в MAX ещё.
Ошибка указывает место в запросе и подсказку.
Когда агент ищет через MCP-сервер max, max_read (command: "search messages") принимает запрос текстом в
query, а timezone — календарный пояс.
chat: пишется в самом запросе; 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 не записывает
вызов в историю запросов.
- Поиск сообщений — поиск на каждый день, сохранённые поиски и подсчёт.
- Поиск по темам — найти обсуждение по смыслу, когда слов не помните.