I've been looking at <http://wiki.apache.org/solr/UserTagDesign> on
and off for a while and think all the use cases could be explained
with simple UML class diagram semantics:
[Taggable](tag:Tag)-- {0..*} ----|--- {0..*} --(tag:Tag)[Tagger]
|
[Tagging]
Rendered: <http://ginandtonique.org/~kalle/tagging.pdf>
This is of course a design that might not fit everybody, it could be
represented using an n-ary association or what not. But I find the
text on the wiki much easier to follow with this in my head.
How (or even if) one would represent this in a index is a completely
different story.
Translated to Java the diagram would look something like this:
/** the user */
class Tagger {
Map<Tag, Set<Tagging>> taggingsByTag;
}
/** the content */
class Taggable {
Map<Tag, Set <Tagging>> taggingsByTag;
}
/** content tagging */
class Tagging {
Tagger tagger;
Taggable tagged;
Date created;
}
class Tag {
String text;
}
Thought it was better to let you people decide whether or not this
fits in the wiki.
--
karl