Similarity Searchを入れてみる

Bulkfeedsさんでベータ公開されているSimilarity Searchが面白そうなので、ちょっとこのサイトにも組み込んでみました。

わかりやすく言うと、「おとなり Blog」とか呼ばれるようなものです。Blog エントリに含まれる文章を形態素解析し、特徴的単語を抜き出して、それらの単語で Bulkfeeds の RSS Item 全文検索します。結果、話題の関連性が高いエントリが検索できます。

JavaScriptがオンなら、このエントリも含め、最近のIndividualアーカイブ下部に幾つか(最大5つ)似たような内容の書かれた他サイトのエントリの一部が見えるハズです(あれば。ない場合は見えない) コレがSimilarity Searchの結果。

Bulkfeeds: パフォーマンス改善策 検索対象記事を1ヶ月以内に絞るということなので、古い記事については対象とはなりませんけど。

組込手順は非常に簡単で、

  1. BulkfeedsさんのAdd / Ping your RSSに自サイトのRSSのURLを入れる
  2. 自サイトRSSの内容が解析されるまで暫く(1〜2日?)放っておく
  3. MTのIndividual EntriesテンプレートにこちらのJava Scriptを埋め込む
  4. 必要に応じてcomments-body等のスタイルを修正する

たったこんだけ(^_^;)

「実際に貼りこむJavaScriptも教えて」とのリクエストが有ったんで、一応紹介。でもコレ、元サイトで公開されてるものとまったく同じなんすけど…(^^;;

<script language="JavaScript">
var url ='<$MTEntryPermalink$>';
var n = 5;
var oe = 'euc-jp';
var style = 'mt-comments'; // or 'lite'
document.write('<scr' + 'ipt language="JavaScript" src="https://bulkfeeds.net/app/similar.js?url=' + escape(url)
+ '&amp;n=' + n + '&amp;style=' + style
+ '&amp;oe=' + oe + '&amp;target=_blank"></scr' + 'ipt>');
</script>

外部サイトは別窓で開く方が良さ気なんで「target=_blank」を指定してます。

その後、新規投稿した記事も継続して要素解析してもらうためには

等にpingを投げておけばいいようです。どうやらこのサイトはMyBlog Japanに捕捉してもらってるようですので、今回はMyBlog Japanにpingを投げるように設定します。

040427a.gif

ということで、「ウェブログが更新されたときに、Movable Type が自動的に通知するサイト」にhttps://ping.myblog.jpを指定しました。

結果、記事をPublishするときに「ping中」という表示が出るようになりました。ちゃんと動いてるみたい。

ワタシは(主にかつてのトラウマから)実にひっそりとWEBサイト(ココはblogツールを使ってるけど、blogの要件を満たしていない)を運用してるんですが、今回は珍しく「コミュニケーションを拡げる側」のアクションを起こしてみました。

この「似た様な記事一覧」という機能が、なんだか非常に面白そうだったんで(^_^;)

どうも、Publish(つまりping)してから数時間程度で「似たエントリー」が並び始めるみたいです。似たエントリーがあれば(^_^;)


Similarity Search の負荷軽減に jscache

ということなので、こちらでも負荷軽減のためキャッシュを組み込みました。このサイトのアクセスなんてたかが知れてるんですが、表示の高速化/サービスの提供元になるべくご迷惑をかけないようにするため、この組み込みは必須だと思います。

まぁココで実際に組み込んだのは、汎用性の高い中継君JSだったりするんですが(^_^;)

document.write('<scr' + 'ipt language="JavaScript" src="jc.cgi?https://bulkfeeds.net/app/similar.js?url=' + escape(url)
+ '&amp;n=' + n + '&amp;style=' + style
+ '&amp;oe=' + oe + '&amp;target=_blank"></scr' + 'ipt>');

組込結果。要するに太字部分を書き足しただけ(^^;;

中継君JS、バージョンアップされてますね。