понедельник, 30 ноября 2009 г.

Предрассудки (небольшой разбор полетов)

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

Вот и с тегами вышла заминка. А все из-за массовости применения тегов. Причем однотипного применения тегов. И мне в этом применении не нравились некоторые детали - иерархия тегов и составные теги.
По поводу иерархии тегов решил почитать что пишут в интернете. Поиск дал не так уж и много релевантных ответов. Наткнувшись на некоторые оговорки о тегах, понял что есть всего три принципа реализации иерархии:
  1. У тегов не может быть иерархии по определению.
  2. Иерархия тегов может быть:
    1. Монородительская (у тега может быть только один родитель).
    2. Полиродительская (у тега может быть сколько угодно родителей - встретил всего в одном блоге).
Из всех этих мне понравилась идея полиродительской реализации иерархии. Более того, я это уже пытался реализовать. Кроме того, только так можно было воплотить идею о том, что "объект - это тоже тег", т.е. у "тегов тоже могут быть теги". К тому же полиродительское построение тегов позволяло легко реализовать идею составных тегов: части составного тега - это просто его теги. Но натыкался на некоторые сложности, в частности, на то что нельзя было однозначно указать такую ситуацию:

  1. Иванов работает бухгалтером в Рога и копыта.
  2. Сидоров работает директором в Рога и копыта.
  3. Иванов работает директором в Шарашкиной конторе.
Так как если бы захотели узнать кто работает директором в Рога и копыта, то получили бы как несложно догадаться и Иванова и Сидорова.
После чего было решено записывать связи тегов в виде дерева значений. Что-то вроде вот такого человечка:

Заполнив базу минимальным набором данных пришел к печальным выводам: все это работает очень медленно, легко зацикливается при поиске данных и все это тяжело для понимания.
Было решено отказаться от деревьев. Хотя идея мне была интересна. И опять начались поиски. Лишь теги не претерпевали никаких изменений.
Вечерними муками было решено создать систему, состоящую из трех частей:
  1. Теги объектов.
  2. Состав сложных тегов.
  3. Значения свойств тегов.
И все это держалось на коэффициентах релевантности связей, подкрепленная простой математической моделью.
Реализовав в черновом варианте такую систему, дошел до поиска информации. И... окончательно запутался в подсчете коэффициентов сложных связей. Самые большие трудности возникали со свойствами. Было решено отказаться от них в пользу системных составных тегов.
Нарисовав карту свойств нашел некоторые парадоксы, о которых можно прочитать в предыдущем посте.
Попив чаю, попытался уснуть. Сон не шел. Все думал как решить проблему. Ведь мне хотелось создать универсальную систему, позволяющую немного-немало описать мир, и, что самое главное, легко находить информацию в этом мире. Но решение никак не приходило в голову.
Но утро вечера мудренее :) И с утра я понял, что не то я убрал. Нужно как раз все кроме свойств убрать. В том числе и теги. О Боже, система тегов без тегов! Кто бы мог подумать. А решение - на поверхности. И слышал я о нем еще в 11ом классе на уроках математики когда учитель спросил нас "Что такое четыре?" и нарисовал на доске "4". Все мы было немного озадачены и поэтому молчали. Ведь ответ был слишком очевиден. "Четыре" - это число. Однако, это не так. "Четыре" - это всего лишь обозначение числа.

Комментариев нет:

Отправить комментарий