Tag Archive for タグ

MT4 / 過去のエントリーにタグを確実につける & サイドバーをJavaScriptベースに

またまたタグの話ですが、タグを管理用に使おうとすると、過去のタグも正確についている必要があります。管理用のタグは一種の分類コードのようなものなので、例えば「ROBOZAK」の場合、あるときは「ROBOZAK」、あるときは「ロボザック」など表記の違いや、全角/半角など、書いたときによっても違うでしょうし、そもそもカテゴリーに「ROBOZAK」があるので、タグ自体付けていなかったり、とにかく色々でとても管理に使えるようなものではありません。
そこで・・・

  • カテゴリーをタグとしても付与。・・・前回「動画」カテゴリーでやった方法です。
  • タイトルもしくは本文に上記の様な表記のあるものを全部拾いタグを付与。

の2つを実施しました。
カテゴリーについては、前回書いたので、タイトルまたは本文について書きます。

■手順

  1. SQLでデータベースより拾う。
    SELECT `entry_id` , “@@ROBOZAK@@”
    FROM `mt_entry`
    WHERE `entry_text` LIKE ‘%robozak%’
    OR `entry_text` LIKE ‘%ロボザック%’
    OR `entry_title` LIKE ‘%robozak%’
    OR `entry_title` LIKE ‘%ロボザック%’

    UNION ・・・・ イチイチSQLを実行するのは面倒なのでUNIONで繋いで一括で実行
    SELECT `entry_id` , “@@○×△□@@”

    ※例えば「動画」タグの場合、「youtube.com」等で拾ってもいいと思います。

  2. @@なんとか@@を、tagidに変換し、mt_objecttag にINSERT用のSQLを作成、実行。
  3. mt_objecttagの重複を削除。


全く別の話題ですが、サイドバーの「最近の記事の一覧」や「コメント一覧」、「月別アーカイブ一覧」、「カテゴリー別アーカイブ一覧」をJavaScriptに書き換えました。
ココログ(TypePad)の様なつもりで使ってましたが、全く違うことに改めて気づきました。
というのは、ココログはSSIで書かれており、サイドバーはインデックス構築時に随時再構築してSSIでINCLUDEしていたため、いつも最新状態の表示でした。ところが、今の環境は、SSIは使えない(.htaccessを設定すれば、今のサーバーは使えますが、コントロールパネルで設定した項目が保証されなくなります)ため、JavaScriptで最新状態を表示することにしました。(JavaScript自体をインデックス構築時、再構築してます。)
・・・という訳で、申し訳ありませんが、JavaScript 「OFF」の方は、サイドバーの大部分の情報が表示されませんので。

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」になっちゃったりします。) 前者の方が効率がいいので、いっそのことそちらに移行してしまおうかとも。分解する方はデータベースの操作でできるのでやるのは簡単ですが、これは移行したら元には戻せないので悩むところです。(テーブルのバックアップをとっておくか、使わなくなったキーワード欄に現在のタグを格納しておけばいいのかも知れないですね。)

MT4 / カテゴリーをタグに変換するSQLを生成するテンプレート

(1つ前のエントリーの続きです。)
動画カテゴリーが破綻・・・ってことで、カテゴリーを抽出して、タグに変換するためのSQLを生成するテンプレートを書いてみました。

insert into mt_objecttag
(`objecttag_blog_id`, `objecttag_object_datasource`, `objecttag_object_id`, `objecttag_tag_id`)
values
<MTEntries lastn=”9999″ category=”動画”>
( ‘3’ , ‘entry’ , <$mt:EntryID$> , @@@@ ), /* <$MTEntryPermalink encode_xml=”1″$> */
</MTEntries>

blog_id: ’3’は、このブログのIDです。
tag_id: ‘@@@@’は、テーブルを調べて「動画」に相当するものに置換。
(SELECT * FROM `mt_tag` WHERE `tag_name` LIKE ‘%動画%’)
※最後の「,」は削除しないとエラーになります。
※コメント欄にチェック用のURLを入れてます。

これで生成したSQLを実行すると、既にタグとして登録されていると重複しますが、重複は簡単にとれるので、チェックしながら入れるより、入れてからまとめてとった方が楽です。

ちなみにこのブログは、既に上記SQLで「動画」カテゴリーに「動画」タグを付けています。カテゴリーを削除するかどうかは、現在検討中です。


※補足

カテゴリーは、`mt_entry`では管理していないようで、

SELECT count( * ) FROM `mt_entry` WHERE `entry_category_id` IS NOT NULL 

を実行すると、’0’が表示されます。

じゃあカテゴリーは、どこで管理しているか調べてみると、複数カテゴリー管理できるように拡張された`mt_placement` のようです。

SELECT
`placement_id`,
`placement_blog_id`,
`placement_category_id`,
`placement_entry_id`,
`placement_is_primary`
 FROM `mt_placement`

「カテゴリー」と「タブ」は、どちらもデータベース管理なので、検索エンジンからのインデックスのことを考えなければ、自由にいったりきたりできそうです。あまり構えずにカテゴリーから削除しちゃってもいいのかも知れません。