Comments
Как вы храните какие теги присвоены файлу?
Совсем непонятно про дерево тегов. В скриншотах дерево по-английски в поиске по-русски. Или это разные теги?
Сами тэги хранятся непосредственно в метаданных картинок, в самих файлах. Это стандарты. См. Википедию: XMP, IPTC.

Дерево английских тэгов на скриншотах — моё личное, существующее в реальности. Это мои, мной придуманные тэги, которые я присваивал картинкам (записывая их в этих метаданных в файлах). Просто как-то так повелось, что они латиницей, а создавать специально для скриншотов отдельное дерево тэгов как-то долго и лениво. А кириллические тэги в полях — просто для примера, для поста. В нормальной рабочей ситуации, естественно, в поля добавляются реальные тэги из этого дерева тэгов. Иначе просто ничего не найдётся — в файлах-то, предположительно, тэги из дерева…
можно ли менять иерархию тегов? если да то как отслеживается что соответствующие теги изменены во всех файлах?
Дерево тэгов не имеет прямого отношения к тэгам картинок. Этого дерева вообще может не быть, я его сделал просто для удобства.

Предполагается, что у каждой картинки есть какой-то свой список тэгов. Каждой картинке можно назначить какие угодно и сколько угодно произвольных тэгов. Они хранятся в самих картинках.

Но поскольку я проставлял картинкам свои вполне определённые тэги, я список всех когда-либо вообще проставленных мной той или иной картинке тэгов для своего удобства ещё и сформировал в дерево. Что может сделать каждый. Дерево хранится в XML-файле. Там его можно править. Ну, либо, в Geeqie для наглядности.

Сами же конкретные тэги картинок хранятся в самих картинках. Просто каждая картинка в данном конкретном случае содержит определённое количество определённых тэгов из этого дерева.
т.е. поиск по what не выдаст картинки протегированые people?
просто я написал программу с полноценным иерархическим тегированием. и не придумал как хранить иерархические теги в самих файлах. ибо при редактировании дерева необходимо обновлять информацию о тегах в файлах. а значит файлы должны быть доступны и проиндексированы. а если так то проще хранить теги отдельно. поэтому и удивился когда увидел иерархию тегов и хранение тегов в файлах.
Самим первоначальным тэггированием я занимаюсь как раз в Geeqie. Когда для каждой конкретной фотографии смотрю, какие нужны тэги. И там — да. Если добавляешь потомка, то добавляется и родитель. Всё верно. И поиск по “what” должен выдать фотки с “people”, поскольку в фотках есть и тот, и другой тэги (ну, конкретно, в случае с “what” — нет, это просто контейнер; а вот, например, “people → “Вася” — да, и тот, и другой).

Но у моей программы функция другая. Не обрабатывать каждую конкретную фотографию, а производить пакетные поиск и при необходимости замену, а также клепать сборники. Это «пакетный» функционал, чего не умеет та же Geeqie. Они у меня просто превосходно дополняют друг друга. Но и без Geeqie прога самоценна. Если знаешь примерный набор тэгов в некотором наборе картинок, можно так же искать, менять и т.д.

Насчёт хранения иерархических тэгов — не знаю. По крайней мере, что касается тэгов в метаданных стандартов XMP и IPTC, там этого нет. Либо пилить свой велосипед с дополнительными файлом(-ами) или базой etc, либо погуглить; может, есть ещё какие-то стандартизированные возможности для этого.
А ваша программа очень заинтересовала. Жду версию для Linux. Очень хочется пощупать!

Вообще, я давно задумывался о более глобальном тэггировании. Моя прога-то, хоть и ИМХО очень полезна, но только для тех файлов, что поддерживают XMP / IPTC. Плюс, да — нет иерархии, а просто plain-список тэгов непосредственно в файлах. А иерархия в XML-дереве. C другой стороны, так ли она нужна именно в файлах? Как я уже написал в соседнем своём комментарии, при непосредственно тэггировании при добавлении потомка так же добавляется и родитель. Так что можно искать как по всем “people”, так и просто конкретно по Васе, который тоже “people” (ну, я надеюсь :)
а если Вася перехал из people в например people->друзья. перетегирование файлов происходит?

спасибо за отзыв! для линукса лаунчер нужно сделать. а так я тестирую в виртуальной машине все работает уже. найду время напишу. я когда писал программу основная идея была — иерархические теги и ничего больше. на самом деле это очень удобно что не нужно думать что где лежит. я уже давно не мыслю категориями папок и не задаю вопрос ГДЕ лежит? ум перестроился (да именно так) на поиск по смысловым категориям. И программа ориентирована не на поиск одного элемента а на управление набором элементов (книги по джава)…
Нет, но это уже вопросы к Geeqie. Хотя, и не к ней.

Дерево — в XML-файле. Сами тэги — в тысячах файлов по всему миру могут быть :) Как можно это представить? Хранить в базе пути ко всем файлам?

А вот тут как раз и вступает в дело моя прога. Переместил в дереве Васю в «друзья» из «людей» — запускаешь мою прогу, скармливаешь ей корневой путь ко всем фоткам и меняешь во всех них пакетно «людей» на «друзей». Заодно можно добавить тэг «собутыльник».
Точнее, в приведённом вами примере не меняешь «людей» на «друзей», а добавляешь тэг «друзья». «люди»-то остаются, раз родительский тэг к друзьям.
я понял. после изменения дерева тегов программа производит соответствующие изменения в файлах.
Only those users with full accounts are able to leave comments. Log in, please.