Основная папка программы - tools/printkeys.
Основная документация [здесь](http://doc.yandex-team.ru/Search/y-server-manual/concepts/printkeys.xml), на этой странице находится то, что не вошло в документацию.

Общую информацию про ((/ЕвгенийГречников/ReadingArcadia/indexfile индекс)) и ((/ЕвгенийГречников/ReadingArcadia/invkeypos ключи и хиты в нём)) нужно прочитать по приведённым ссылкам.

Опция -k включает фильтрацию вывода, но не влияет на алгоритм чтения: чтение происходит всегда последовательно с начала списка ключей до появления ключа, который больше любого ключа с заданным префиксом (или до конца файла, если такого ключа нет). Соответственно, printkeys может работать с файлами порций, но плохо подходит, если надо найти конкретный ключ, далёкий от начала; для таких ситуаций есть ((/ЕвгенийГречников/ReadingArcadia/tools/diaprintkeys diaprintkeys)), которая, соответственно, не может работать с файлами порций (где нет оглавления ключей), зато быстро ищет ключи с нужным префиксом.

Дополнительные опции:
* -K "<hit_count> <hit_length> <hit_offset>" (три числа через пробел должны быть одним аргументом с точки зрения командной строки) - печатать хиты из inv-файла. Параметры должны в точности соответствовать данным какого-нибудь ключа, которые выводит printkeys -pc
* -D <docId> - выводить только ключи и хиты для документа с идентификатором docId. Данные для нулевого docId вывести нельзя, -D 0 игнорируется. Должна быть указана хотя бы одна из опций -w|x|l|i|f, контролирующих формат вывода хитов (иначе нечитаемый вывод содержит только повторяющиеся ключи без табуляций и перевода строк). Формат вывода: для каждого хита каждого ключа (подходящего под критерий -k, если есть) в заданном документе выводится "<ключ>\t<хит>\n". Формат вывода ключа такой же, как и в обычном режиме
* -r (remove prefix) - при сравнении ключа с аргументом -k убирать префикс ключа; по непроверенным данным, может иметь странные эффекты при наличии нескольких различных префиксов в индексе (printkeys заканчивает работу, обнаруживая ключ, больший аргумента -k; если при сравнении отрезать префикс, то после такого ключа могут быть и другие, подходящие под критерий -k, они не будут найдены)
* -v (only valid keys) - игнорировать ключи, содержащие символ \t или \n; указание опции -i после -v сбросит этот режим
* -m просто игнорируется
* -z - включать язык в декодированное представление ключа

Есть 4 разных режима работы:
  * режим, включаемый -D (дамп хитов для заданного документа): понимает опции -0|1, -w|x|l|i|f, -zvkreo
  * режим, включаемый -K (дамп хитов из куска inv-файла): должна быть указана одна из опций формата печати -w|x|l|i|f, может быть указана одна из опций формата файла -0|1, опция -o, прочие опции игнорируются
  * режим, включаемый -s (сбор статистики по формам): понимает опции -0|1 (хотя при -0 менее осмысленна, поскольку в файлах порций не хранится число хитов для ключа как отдельная сущность), -zvkro. Проходит по всем разрешённым ключам, смотрит на слова, подсчитывает встречаемость разных форм слова, сортирует по встречаемости, ограничивается 512 формами и усредняет по всем словам; на выходе печатает строку "Word forms stats:\n" и 512 строк "<номер n, считая с 1>\t<число слов, у которых есть хотя бы n форм, делённое на общее число слов>\t<сумма по всем словам частоты n-й по частоте формы, нормированная так, чтобы сумма по всему столбцу была 1>\n". Физический смысл и область применимости остаются загадочными
  * обычный режим (если нет ни -D, -K, ни -s): понимает опции -0|1, -w|x|l|i|f, -zvkrcepto. Проходит по всем разрешённым ключам; если не указана опция -c, то объединяет ключи с одинаковой леммой; печатает ключи в формате <ключ>[<пробел или таб><число хитов для ключа>]<пробел или таб><размер хитов для ключа>[<пробел или таб><смещение в inv-файле для хитов ключа>]. Выбор между пробелом и табом зависит от наличия опции -t. Число хитов отсутствует в файлах порций (опция -0). Смещение в inv-файле печатается только при наличии опции -p. Если есть одна из опций -w|x|l|i|f, то после ключа печатаются хиты в соответствующем формате (во всех форматах хиты начинаются с табуляции). При наличии опции -e ключ печатается "как есть" с тем лишь отличием, что символы с кодом n <= 32 преобразуются в пару (символ 'ESC' с кодом 27, символ с кодом n+32). При отсутствии опции -e ключи, кодирующие формы, декодируются: <префикс><лемма>[ L|R|LR][ {<language>}][ (<форма1>, ..., <формаN>)]. L|R|LR - часть леммы, означает тип присоединения (лемма получена из мультитокена и слева/справа были другие леммы). Язык не печатается при отсутствии опции -z. Формы не печатаются при наличии опции -c.
