“Beautiful” “Girl” – the peril of Flickr Tags and Yahoo! Picture Frame widget
So recently I installed Yahoo! Widgets on my work computer. I’m not one who would normally install crap on any of my computers, but 1) my girlfriend installed it at her workplace and highly recommend it, and 2) it’s from Yahoo!, so I owe it to them to at least install it at work, just to show that I have team spirit or company spirit or whatever. Well… as you would’ve probably guessed by now, I love Flickr… and this Picture Frame widget is PERFECT! I can put in tags and it will randomly show me pictures from Flickr! I loved it… until today… see, what words can you put in there? Beach, dog, cute, shiba, maltese, tokyo, london, japan, england… … girl… “beautiful” “girl”…
Yup, it’s work, so I can’t put in shit like “sexy” “girl” or “boobs”, so I put in “beautiful” “girl”, and I swear to god this ho came up like 20 million times today! I was like “huh? really?!” went to check the tags I put in… yup, I had “beautiful” “girl” alright… WTF?! God Damn’it! I put in “beautiful” + “girl”, I want pictures of actual “beautiful girls”. I mean, this is gotta be the biggest problem with tags. The owner can tag whatever the fuck they want on their own contents. There has got to be an evolution to this tag thing, I mean… it’s really great for searching 90% of the time, but because people can LIE, we’ll get 10% of shit like this, completely ruining the whole experience.
How should we improve tags? As of now, flickr doesn’t allow other people to add tags to your pictures unless they’re in your friends & family list. This makes sense because the picture belongs to you, the owner. Let’s say, if I take a picture of my errr… brain, and someone from come and tag it with “dumbass”, I would be pissed too!
However, if someone does feel that I’m a dumbass, he should be allowed to keep that information to himself, right? What flickr has now is called “narrow folksonomy” (where only one set of tages are attached to an item). Given how slow flickr is when searching for multiple tags, I wouldn’t be surprised that its tags are all stored in one big, denormalized table. (Hmm… may be I should try asking this internally, there ought to be documentation somewhere…) Anyway, without knowing the reality, my suggestion is to “upgrade” to “2-way tagging”. There should be another table created to store all the tags that you have given out. So if the original table is like:
(When clicking on the URL, it grabs its tags by: SELECT tags FROM [table_tags] WHERE url=’@url’; When searching for URL with a certain tag, it gets the URL by: SELECT url FROM [table_tags] WHERE tags=’@tag’; If searching for multiple tags, then: SELECT url FROM [table_tags] GROUP BY url HAVING tags IN (‘X’,’Y’,’Z’); (flickr doesn’t use “LIKE”, if you spell “mountai”, it’s not going to give you any pictures tagged with “mountain…”)
Then, the new table can actually be a modification of the original table with additional fields:
Hmm… this can actually replace the original table. Most of the tags will be added by the owner, so most will have the same user_id, visible is 1 (yes). Now, the friends and family can also tag the pictures, their user_id will be logged, visible is still 1. Finally, the new option for “everyone else” can be called “private tag” or “your own tag”. These tags will have your user_id and visible is 0 (no). So, in the example of the fugly here… I can private tag it with “fugly”. It’s stored in the db but won’t show up on the picture. When I query the tags, there will need to be a new “NOT” option:
SELECT url FROM [table_user_tags] GROUP BY url HAVING (tags IN (‘beautiful’,’girl’) AND (user_id=’self’ AND tags != ‘fugly’))