Mar 19, 2005

AllKeywords Plugin

AllKeywords PluginはTagwire Pluginに開発が引き継がれました。下記のエントリーをご参照ください。

エントリーのキーワードをイワユル「タグ」として利用するためのさまざまな機能を提供するプラグイン。

all-keywords.zip

0.10 (2005.03.19):
  • 公開開始。
0.11 (2005.03.20):
  • case_sensitiveオプションの追加。
0.12 (2005.03.26):
  • コードクリーニング。
  • MT-XSearchとの連携をサポート。MT-XSearchとの連携方法に関しては別エントリーで述べる予定。

Ogawa::Buzz: 四畳半フォークソノミーの実現に向けてのアイディアを実現すべく、Movable Typeのエントリーのキーワード部分を使ったさまざまな便利機能を提供する。

具体的にはこのプラグインはカテゴリーの場合と同様に、利用されているキーワードやキーワードの個数をリストアップする機能、指定したキーワードにマッチするエントリーをリストアップする機能、類似度が高い(現在のエントリーとマッチするキーワードの数が多い)エントリーをリストアップする機能などを柔軟に実現する。

ひとまず生半可なドキュメントができたので公開してみた。長いよ。

MTAllKeywordsコンテナタグ

ブログ内のすべてのキーワードをリストアップするコンテナタグ。

オプション:

sort_by="keyword|count"
リストアップする順序をキーワードのアルファベット順か出現頻度順かを選択する。デフォルトではkeyword。
sort_order="ascend|descend"
リストアップする順序を昇順か降順かを選択する。デフォルトでは昇順(ascend)。
lastn="N"
リストをN個まで表示する。デフォルトではすべて表示する(N=0)。
delimiter="区切り文字"
キーワードを切り出す際に使用するデリミタを指定する。「delimiter=","」とするとカンマで区切られた語を一個のキーワードとする。デフォルトでは空白文字(スペース、タブ)をデリミタとする。
case_sensitive="0|1"
キーワードの大文字・小文字を区別するかどうかを指定する。デフォルトでは区別する(case_sensitive=1)。

このコンテナタグの中で利用可能なタグ:

<$MTAllKeyword$>
一個のキーワードを表示する。
<$MTAllKeywordCount$>
一個のキーワードの出現回数を表示する。
<$MTAllKeywordsTotal$>
すべてのキーワードの数を表示する。MTAllKeywordsコンテナの直後でも利用可能。
<$MTAllKeywordsTotalSum$>
すべてのキーワードの数の総和を表示する。MTAllKeywordsコンテナの直後でも利用可能。

また、このコンテナの外部で利用可能なタグも利用できる。

使用例:

出現頻度の高い10個のキーワードをリストアップしてそれぞれをTechnorati Tagにリンクする。

<ul>
<MTAllKeywords sort_by="count" sort_order="descend" lastn="10">
<li><a href="http://www.technorati.com/tag/<$MTAllKeyword$>"
  rel="TAG" title="TAG:<$MTAllKeyword$>">
  <$MTAllKeyword$></a> (<$MTAllKeywordCount$>)</li>
</MTAllKeywords>
</ul>
<ul>
<li>Total Keywords: <$MTAllKeywordsTotal$></li>
<li>Total Keywords(Sum): <$MTAllKeywordsTotalSum$></li>
</ul>

MTEntryAllKeywordsコンテナタグ

エントリーコンテキスト(MTEntriesの内部、または個別アーカイブ)でMTAllKeywordなどを利用可能にするコンテナタグ。

オプション:

delimiter="区切り文字"
キーワードを切り出す際に使用するデリミタを指定する。「delimiter=","」とするとカンマで区切られた語を一個のキーワードとする。デフォルトでは空白文字(スペース、タブ)をデリミタとする。
case_sensitive="0|1"
キーワードの大文字・小文字を区別するかどうかを指定する。デフォルトでは区別する(case_sensitive=1)。

このコンテナタグの中で利用可能なタグ:

MTAllKeywordsと同様なので省略。

使用例:

各エントリーのキーワードをリストアップしてそれぞれをTechnorati Tagにリンクする。

<MTEntries lastn="10">
<h2><$MTEntryTitle$></h2>
 
<ul>
<MTAllKeywords sort_by="count" sort_order="descend" lastn="10">
<li><a href="http://www.technorati.com/tag/<$MTAllKeyword$>"
  rel="TAG" title="TAG:<$MTAllKeyword$>">
  <$MTAllKeyword$></a></li>
</MTAllKeywords>
</ul>
 
<$MTEntryBody$>
</MTEntries>

MTAllKeywordCountも利用できるが残念ながら(当然)1と表示されるだけである。

MTEntriesWithKeywordsコンテナタグ

指定したキーワードを含むエントリーをリストアップするコンテナタグ。

オプション:

keywords="keyword-list"
リストアップする対象となるキーワードを一個以上指定する。
delimiter="区切り文字"
keywordsオプションで指定したキーワードリストからキーワードを切り出す際に使用するデリミタを指定する。「delimiter=","」とするとカンマで区切られた語を一個のキーワードとする。デフォルトでは空白文字(スペース、タブ)をデリミタとする。
case_sensitive="0|1"
キーワードの大文字・小文字を区別するかどうかを指定する。デフォルトでは区別しない(case_sensitive=0)。
sort_by="title|status|created_on|modified_on|author_id|excerpt"
エントリーをリストアップする順序を選択する。デフォルトではエントリーの作成時刻の順(created_on)に従う。
sort_order="ascend|descend"
リストアップする順序を昇順か降順かを選択する。デフォルトでは降順(descend)。
lastn="N"
リストをN個まで表示する。デフォルトではすべて表示する(N=0)。

このコンテナタグの中で利用可能なタグ:

MTEntriesと同様に「MTEntry*」というタグが一通り利用できる。また、MTEntriesの外部で利用可なタグも同様に利用できる。

使用例:

"movable"と"type"というキーワードを含むエントリーをすべてリストアップし、タイトルや本文を表示する。

<MTEntriesWithKeywords keywords="movable type">
<h2><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></h2>
 
<$MTEntryBody$>
<$MTEntryExtended$>
 
</MTEntriesWithKeywords>

平たく言うと通常のMTEntriesコンテナと同様に使用できる。

MTMostRelatedEntriesコンテナタグ

エントリーコンテキスト(MTEntriesの内部、または個別アーカイブ)で関連するキーワードを持つ他のエントリーをリストアップするコンテナタグ。関連度が高い(関連するキーワードの個数が多い)エントリーから順にリストアップする。

オプション:

delimiter="区切り文字"
キーワードを切り出す際に使用するデリミタを指定する。「delimiter=","」とするとカンマで区切られた語を一個のキーワードとする。デフォルトでは空白文字(スペース、タブ)をデリミタとする。
case_sensitive="0|1"
キーワードの大文字・小文字を区別するかどうかを指定する。デフォルトでは区別しない(case_sensitive=0)。
lastn="N"
リストをN個まで表示する。デフォルトではすべて表示する(N=0)。

このコンテナタグの中で利用可能なタグ:

MTEntriesと同様に「MTEntry*」というタグが一通り利用できる。また、MTEntriesの外部で利用可なタグも同様に利用できる。

使用例:

MTEntriesで最近の10件をリストアップし、そのそれぞれのエントリーについて関連するエントリーをリストアップする。

<MTEntries lastn="10">
<h2><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></h2>
<$MTEntryBody$>
 
<ul>
<MTMostRelatedEntries>
<li><a href="<$MTEntryPermalink$>"><$MTEntryTitle$></a></li>
</MTMostRelatedEntries>
</ul>
 
</MTEntries>

使用上の注意

Movable Type、およびAllKeywords Pluginはキーワード用のインデックスを持たない。したがって、MTAllKeywords, MTEntriesWithKeywords, MTMostRelatedEntriesは、使い方によっては強烈に重い!!ということを自覚して使うこと。エントリー数が増えると生半可なレンタルサーバーでBerkeleyDBなど使っている場合には500 Internal Server Errorを食らうことになるので要注意である。これを改善するアイディアはいくつか思い付いているので今後改善していく予定である。

更新履歴

2005-03-20更新:

case_sensitiveオプションを追加した。MTAllKeywordsとMTEntryAllKeywordsでは区別し、MTEntriesWithKeywordsとMTMostRelatedEntriesでは区別しない、のがデフォルトと設定としてあるので要注意。どうしてこのような設定になっているかというと、前者はキーワードをリストアップし、後者はエントリーをリストアップするという性質の違いがあるためである。

キーワードをリストアップする場合には、大文字・小文字を区別しないとすると例えば「ipOD」と「iPod」を同一のものとみなす。したがってリストアップ時にどのような表現を採るべきか(ipOD? iPod? Ipod? IPOD? ipod?)を自動的に判定せざるを得ない。これは必ずしも望ましくない。

一方エントリーをリストアップする場合には、なるべく多くのエントリーとマッチすることが望ましい。大文字・小文字を区別することにすると、たまたま特定のエントリーのキーワードに「ipod」と登録した場合、他の「iPod」関係のエントリーとの関連性が発見できなくなる。

SEE ALSO

英語版はまだ書いていない。

LICENSE

This code is released under the Artistic License. The terms of the Artistic License are described at http://www.perl.com/language/misc/Artistic.html.

AUTHOR & COPYRIGHT

Copyright 2005, Hirotaka Ogawa (hirotaka.ogawa at gmail.com)

About Me

My Photo

つくばで働く研究者

Total Pageviews

Amazon

Copyright 2012 Ogawa::Buzz | Powered by Blogger
Design by Web2feel | Blogger Template by NewBloggerThemes.com