Firefox3书签中的Tags存哪儿了?

电脑岁数大了是不行,即使装上了号称速度有很大改观的Firefox3,我的老爷机也没快到哪儿去,这还是在一大票插件都由于不兼容被咔嚓了之后,唉。

不过Firefox3还是有些不错的新功能的,比如网址栏中的“星星”,和Gmail里面的哪个很像吧,不知道是谁家的专利,这个星星挺有意思,当你浏览到觉得不错的网站时,点一下星星就可以收藏起来了,默认是在书签的Unfiled Bookmarks文件夹中,以后可以慢慢整理;点两下星星会弹出窗口让你选保存位置,并可以输Tag。

Tag可以说是Web 2.0的标志性特征了,也是组织和查找信息的一种有效方式,所以我就很感兴趣,这个Tags被Firefox3存到哪个文件里去了?Tag的存储方式和Tag Cloud的算法我很感兴趣,也想看看FF的解决方式。

一般Firefox会把书签保存在bookmarks.html文件当中,不过Firefox3改进了,把书签放到了sqlite数据库中,文件名就叫做places.sqlite。这个文件在Firefox3运行时会以独占方式打开,关闭FF后才能用sqlite3打开。

起初没想到有什么难处,直接看schema,结果仔细的读了一遍也没发现哪些地方有tag的踪影:

  • moz_anno_attributes 注释的属性,没几行数据,不知道干啥的
  • moz_annos 目前是空的,应该是什么的注释
  • moz_bookmarks 书签项目
  • moz_bookmarks_roots 书签项目的根网站集合,新安装FF的还没数据呢
  • moz_favicons 网站图标favicon的位置
  • moz_historyvisits 哪个网站你浏览了多少次,偶的隐私啊。。。
  • moz_inputhistory 输入历史?暂无数据
  • moz_items_annos 书签的注释,也就是那个“Description:”
  • moz_keywords 关键字,和“Description:”在一个界面输入,没啥用处
  • moz_places 所有浏览的地址历史

看吧,没哪个表是和tag有什么关联的,可用grep一查,我标记的tag确实是在这个文件中,只好出绝招:

sqlite3 places.sqlite ".dump" > t.sql

然后在t.sql里面一查找,终于明白了:

INSERT INTO "moz_bookmarks" VALUES(346,2,NULL,4,2,'testtag',NULL,'',1208788891265751,1208788891362043);
INSERT INTO "moz_bookmarks" VALUES(347,1,638,346,0,NULL,NULL,NULL,1208788891361294,NULL);

tag就是存在了moz_bookmarks这个表中,和书签的记录混在一起。像上面这种情况,每个tag除了自身占一行记录之外,如果有几个书签被标记了这个tag,那么就还会多出几条记录tag-书签关联关系的记录。

窃以为这并不是存储tag的最佳方式,而且FF在tag的使用上也太简单了,目前看到的就是一个Smart Bookmarks里能按常用tag查网站,连Tag Cloud也没有。一是不知道以后的tag数据格式是否会改变,二是应该会有扩展来完善这块功能,期待吧。

Leave a Reply

Your email address will not be published. Required fields are marked *