[Tagdb] Tagging multiple classes of things

Erik Hatcher esh6h at virginia.edu
Thu Mar 9 08:46:31 GMT 2006


On Mar 8, 2006, at 10:21 PM, Colin Viebrock wrote:
> I'm not familiar with anything other than RDBMS ... what would you  
> suggest?

Knowing Otis' (and my) biases, he's implying that an inverted index  
(aka Lucene) is perhaps the best tool for dealing with tags.

I'm doing a something similar - a tagging system for 19th century  
literature objects.  I'm using Lucene as well as Kowari, no RDBMS in  
the picture.

	Erik




>
> - Colin
>
>
> On 8-Mar-06, at 4:21 PM, <ogjunk-tagdb at yahoo.com> wrote:
>
>> Copy/paste tagdb at lists.tagschema.com into "To". :)
>> Late reply.
>> As you can see from replies so far, there are lots of ways you can  
>> go about it.  I'd add this: is RDBMS really the best tool for what  
>> you want to do? :)
>>
>> Otis
>> -- 
>> Simpy -- http://www.simpy.com/ -- Tag.  Search.  Share.
>>
>> ----- Original Message ----
>> From: Colin Viebrock <cviebrock at tucows.com>
>> To: tagdb at lists.tagschema.com
>> Sent: Friday, March 3, 2006 5:25:12 PM
>> Subject: [Tagdb] Tagging multiple classes of things
>>
>> I'm looking for some technical suggestions on how to accomplish the
>> following:
>>
>> Say I was running a magazine for DIY-ers.  I have several database
>> tables (MySQL, but that shouldn't matter), one for each of the
>> following:
>>
>>     - articles
>>     - sponsors
>>     - products
>>
>> Each table has an ID column, which is unique to that table, and other
>> relevant columns (e.g. articles.title, sponsors.name,
>> products.featurelist, etc.).
>>
>> I want to be able to tag everything, so I have a tag table:
>>
>>     - tags
>>         - tag_id
>>         - tag
>>
>> And now I want to build the relationships between tags-articles,
>> tags-advertisers and tags-products.  I could do it with 3 different
>> tables:
>>
>>     - tag-articles
>>         - tag_id
>>         - article_id
>>
>>     - tag-sponsors
>>         - tag_id
>>         - sponsor_id
>>
>>     - tag-products
>>         - tag_id
>>         - product_id
>>
>> But that seems problematic when I want to do a search for everything
>> tagged with "foobar".  I'll need to do three queries:
>>
>>     SELECT ... FROM tags LEFT JOIN tag-articles USING (tag_id)  
>> LEFT JOIN
>> articles USING (article_id)
>>     SELECT ... FROM tags LEFT JOIN tag-sponsors USING (tag_id)  
>> LEFT JOIN
>> sponsors USING (sponsors_id)
>>     SELECT ... FROM tags LEFT JOIN tag-products USING (tag_id)  
>> LEFT JOIN
>> products USING (products_id)
>>
>> So, what if I built a generic relationship table:
>>
>>     - tag-relations
>>         - tag_id
>>         - foreign_table
>>         - foreign_id
>>
>> This table would have entries like:
>>
>>     1, 'articles', 3
>>     1, 'sponsors', 5
>>     1, 'products', 28
>>     1, 'products', 36
>>     ...
>>
>> i.e. the tag with tag_id=1 applies to article #3, sponsor #5 and
>> products #28 and #36.
>>
>> The thing is, you can't do the kind of "meta" select required, not in
>> MySQL at least AFAIK, so you are back to making multiple queries.
>>
>> Any ideas on how best to implement this kind of system: where one
>> database of tags needs to be shared with several other databases?
>> Maybe the multiple query solution is the only way ... I'd just  
>> like to
>> know that before I start architecting.  :)
>>
>> - Colin
>>
>> _______________________________________________
>> Tagdb mailing list
>> Tagdb at lists.tagschema.com
>> http://lists.tagschema.com/mailman/listinfo/tagdb
>>
>>
>>
>> _______________________________________________
>> Tagdb mailing list
>> Tagdb at lists.tagschema.com
>> http://lists.tagschema.com/mailman/listinfo/tagdb
>
> _______________________________________________
> Tagdb mailing list
> Tagdb at lists.tagschema.com
> http://lists.tagschema.com/mailman/listinfo/tagdb



More information about the Tagdb mailing list