Какие схемы тегов наиболее эффективны / действенны?

http://tagging.pui.ch/post/37027745720/tags-database-schemas

Обработка тегов в Stackoverflow - одна из лучших, которые я когда-либо видел.

Кто-нибудь знает, является ли это шаблоном схемы, из которого я могу почерпнуть некоторые идеи?

В противном случае я просто ищу предложения о том, какие схемы тегов успешно реализовали другие.

Ответов (2)

Вы можете начать с этого: http://tagging.pui.ch/post/37027746608/tagsystems-performance-tests

упоминается в этом: Масштабирование веб-приложений и тегов - Digg, Del.icio.us, StackOverflow

Все зависит от объемов данных и содержимого для распределения тегов и соотношений плотности.

Если у вас низкий коэффициент распределения и плотности тегов (типичные данные, созданные человеком), вы можете просто сгенерировать уникальный идентификатор или хэш для каждой возможной коллекции тегов, используемых данными. Свяжите идентификатор "коллекции тегов" с каждым экземпляром данных с этими тегами.

Это может удивительно хорошо работать для многих форм данных, созданных человеком.

например, в Stackoverflow ~ 500 000 вопросов и ~ 20 000 тегов (слишком много тупиковых тегов!). У большинства вопросов меньше пяти тегов. В худшем случае у вас будет 500000 идентификаторов «коллекции тегов», которые нужно связать, но, что более реалистично, у вас будет несколько тысяч

Вам также потребуется либо отслеживание экземпляров, либо сборка мусора в коллекции «сборка тегов», поскольку конкретная комбинация тегов выйдет из употребления.

например

  • Тег: id, tagName
  • TagCollection: идентификатор, instanceCount
  • TagCollectionTag: tagCollectionIId, tagId
  • Данные: идентификатор, заголовок, содержание, tagCollectionId

Вставка тегов выполняется быстро, если используется хеш (хеш-код для всех тегов коллекции). В противном случае вам придется искать коллекции TagCollection и TagCollectionTag, но в любом случае они не должны быть слишком большими.

Поиск выполняется быстро; поиск TagCollectionTag для экземпляров, содержащих определенный набор тегов, а затем найти строки данных с любым из этих tagCollectionId

Надеюсь, это не слишком запутало :-)