Google Scholar で、指定した論文を参照しており、かつ指定の語句を含む論文を検索するためのブックマークレットを公開します。このような検索は、 Google Scholar のフォームからは実行できませんが、 URL を細工することで実行できるようです。ここで紹介するブックマークレットを使うと、自分で URL を細工する手間が省けます。
Google Scholar では論文を検索することができます。論文の中に出てくる語句で検索するだけでなく、論文の著者名で絞り込む (author: 演算子あるいは 著者: 演算子) こともできます。また、検索して見つけた論文から、その論文を参照している論文へと飛ぶこともできます。
Google Scholar を普通に使っていると、ある論文 A を参照していて、かつ○○という語句を含む論文を検索することはできませんが、怪しい方法を使うと可能です。論文 A を参照している論文を検索した後、 URL をいじって「&q=検索語句」を後ろにくっつけるだけです。ただし、検索語句は自分でパーセント符号化する必要があります。これでは面倒なので、ブックマークレットを作りました。 Firefox 2 と Internet Explorer 7 で動くことを確認しています。ご自由にお使いください。
ブックマークレット: 参照元の中で検索 (もちろん無保証)
このブックマークレットをブラウザーのブックマークに登録しておくと、 Google Scholar で論文 A を参照している論文を検索した後、検索したい語句をページ上部のテキストボックスに入力してこのブックマークレットを選択することで、論文 A を参照していてかつ入力した検索語句を含む論文を探すことができます。
Greasemonkey 用のユーザースクリプトもあります。
例えば、 Alan Turing が Turing 機械を導入した論文である「On Computable Numbers, with an Application to the Entscheidungsproblem」を参照し、かつ「origami」を含む論文を検索してみます。上の「参照元の中で検索」をブラウザーのブックマークに登録してあるものとします。
まず Google Scholar で「On Computable Numbers, with an Application to the Entscheidungsproblem」を検索します。
次に「引用元」リンクを辿り、「On Computable Numbers…」を参照している論文を検索します。 1,919 本も出てきます。
ここで、ページ上部にある検索語のテキストボックスに「origami」と入力し、 (「検索」ボタンを押さずに) ブラウザーのブックマークから「参照元の中で検索」を選択します。これで「On Computable Numbers…」を参照し、かつ「origami」という語を含む論文が検索できました。なお、「origami」と入力した後で「検索」ボタンを押すと、単にすべての論文の中から「origami」という語を含む論文を検索することになってしまいます。
工夫次第でいろいろな使い方ができると思います。試してみてください。
当然ながら、これは Google がサポートしている使い方ではないので、正しい結果を返さなかったとしても Google の責任ではありません。また、著者も責任を持ちません。
Google Scholar の検索結果のページには上部と下部の 2 個所に検索語を入力するテキストボックスがありますが、このブックマークレットはページ上部のテキストボックスしか見ないので、ページ下部のテキストボックスに検索語を入力しても動作しません。
Firefox で Greasemonkey 拡張機能をインストールしてあるなら、このブックマークレットよりユーザースクリプト版の方が使いやすいと思います。
上の「参照元の中で検索」ブックマークレットの JavaScript ソースコードに改行や空白やインデントを入れたものを示します。
with ({ q: document.forms.gs.elements.q.value })
{
location.href = location.href.replace(/([\?&])q=[^&#]*(&?)/, function(s, cap1, cap2) {
if (cap1 == "?")
return "?";
else
return cap2;
}) + (q == "" ? "" : "&q=" + encodeURIComponent(q).replace(/%20/g, "+"));
}
ブロックスコープを持つ変数を導入するために with
文を使っています。このテクニックは JavaScript でブロックスコープを実現する (Days on the Moon; nanto_vi さん) で知りました。