Tag Archive for del.icio.us

MT4 / タグに関して今までに行ったことのまとめ

今までに実施した事項についてまとめました。
管理が悪いこともありますが、そもそもこんなに大量にブログを書くとは思ってなかったので、将来を見越した設計にはなっていません。正直なところ今後どうなるかも、どうしたいかも明確なビジョンを持っている訳ではなく、ハッキリしないため、カテゴリーをどう使うか? タグをどうするか? 
いまだに決めかねています。(開き直って言えば「こちとら趣味で書いているんだからビジョンなんかあるわけねぇ」・・・です(笑)) どうするにせよ、量の問題があるので、進むだけではなく、失敗だと分かったとき簡単に戻れるようにしておかないと、バカですよねー それだけは考えながら進めたいと思ってます。

■Deliciousのタグを取り込む方法 ※Delicious以外でも同じ方法でできると思います。

  1. DeliciousからタグをXMLダンプ(https://api.del.icio.us/v1/posts/all)
  2. EntryPermalinkをキーにマッチング、EntryIDを算出。
  3. タグはまとめてブログに登録(未公開で可)→mt_tag生成。
  4. Deliciousのタグとmt_tagをマッチングし、tagid算出。
  5. 2と4からmt_objecttagへのInsert SQL生成。

■キーワードをタグに取り込む方法

  1. EntryIDとキーワードをダンプするテンプレート作成。
  2. キーワードをタグに分解。
  3. タグはまとめてブログに登録(未公開で可)→mt_tag生成。
  4. キーワードから取り出したタグとmt_tagをマッチングし、tagid算出。
  5. 2と4からmt_objecttagへのInsert SQL生成。
  6. 取り込んだ内容確認。
  7. キーワードをNULLクリア(NULLでアップデート)。

■今後の課題
いま思っていることは、MT上のタグは、例えば「MANOI PF01」などは、スペースを含んだ形で管理するようにしていますが、現在の主流(Delicious/Yahoo/FC2など)は、「MANOI」「PF01」といった具合にスペースを含まない形で管理しています。(スペースを含めると別のもの「MANOI_PF01」になっちゃったりします。) 前者の方が効率がいいので、いっそのことそちらに移行してしまおうかとも。分解する方はデータベースの操作でできるのでやるのは簡単ですが、これは移行したら元には戻せないので悩むところです。(テーブルのバックアップをとっておくか、使わなくなったキーワード欄に現在のタグを格納しておけばいいのかも知れないですね。)

del.icio.usのタグを Movable Type 4 (MT4)に移行する

ココログではタグを管理できなかったのでdel.icio.usで管理してましたが、これをXMLダンプし、Movable Type 4 (MT4)に移行してみました。

※参考にできる資料がなかったため、独自にテーブルなどを調べて実施したものです。(私はうまくいきましたが、)結果については保証しません。

■EntryIDの調査(インデックステンプレート作成)
<MTEntries lastn=”9999″>
<$mt:EntryID$>,<$MTEntryPermalink encode_xml=”1″$>
</MTEntries>
・・・これと、del.icio.us(XML)をマッチングすることにより、どのタグをどのエントリーに追加するかが分かる。

■mt_tagテーブルでtag_idを調べる (例:タグ「i-SOBOT」の場合)
これを実施する前に、出現頻度の上位のタグを調べます。(←Perlで書くのが簡単です。) そのタグを、空のエントリーに追加し登録するとmt_tagテーブルに登録されるようです。mt_tagは、簡易シソーラスになっていて、大文字は全て小文字に、スペースや記号は詰めたものも登録され、その子どもとして登録されるようです。(例: 「i-SOBOT(子:tag_id)」→「isobot(親:tag_n8d_id)」

195.png

■タグの一括追加 ★これを実行する前には、必ずバックアップをとってから実行して下さい。
insert into mt_objecttag
(`objecttag_blog_id`, `objecttag_object_datasource`, `objecttag_object_id`, `objecttag_tag_id`)
values
(3,’entry’,3488,51),
(3,’entry’,3509,51),
(3,’entry’,3514,51),
(3,’entry’,3620,51),
(3,’entry’,3630,51),
(3,’entry’,3681,51),
(3,’entry’,3721,51),
     :
※第1パラメータ:ブログID,第2パラメータ:entry固定,第3パラメータ:EntryID,第4パラメータ:上記で調べたtag_id。(objecttag_idはオートインクリメントのため省略。第1〜4が重複しても登録できてしまうようです。重複した分は、SQLのdistinctやcountを使えば調査・削除しようと思えばできますが、削除しなくても問題なさそうです。)
★重複の例
“2”;”3″;”entry”;”5858″;”19″
“4”;”3″;”entry”;”5858″;”20″  → 4件重複
“2”;”3″;”entry”;”5858″;”111″
“2”;”3″;”entry”;”5858″;”246″
“2”;”3″;”entry”;”5858″;”612″
“2”;”3″;”entry”;”5858″;”7679″
このエントリーも表示上は正常に表示されます。重複をとるには、単に開いて閉じるだけではダメで、1度キーワード欄に移すなどして空欄にして、再登録するときれいになります。

一連の流れをある程度スクリプトにすると、割と効率よくタグ追加できます。(私は、これで全体の7割くらい追加が終わってます。逆に少数派のタグは、「ゆれ」なども含んでいるため、追加しなくてもいいかも知れません。)


mt_objecttag の重複を整理するためには、1度エクスポートして整理してからインポートするといいかも知れませんね。