最近、Emacs-w3m の w3m-search で、検索エンジンを google-en にしても英語検索が出来なくなった。
例えば、emacs を google-en で検索しても、日本語のページがトップに出てくる。
どうやら、Google は、検索をかけてる国の情報か何かを抜き出して、Google.com からでも日本語をメインに検索するようにしているらしい。
検索 URL の末尾に &hl=en を加えると英語検索に戻るっぽい。emacs-w3m の CVS へのパッチを書いた。
--- w3m-search.el 13 6月 2006 20:49:56 +0900 1.57 +++ w3m-search.el 09 9月 2006 09:25:41 +0900 @@ -78,19 +78,21 @@ "http://www.google.com/search?q=%s&hl=ja&lr=lang_ja&ie=utf-8" utf-8) ("google-en" - "http://www.google.com/search?q=%s"))) + "http://www.google.com/search?q=%s&hl=en&ie=utf-8" + utf-8))) (ja '(("google" "http://www.google.com/search?q=%s&hl=ja&lr=lang_ja&ie=Shift_JIS" shift_jis) ("google-en" - "http://www.google.com/search?q=%s"))) + "http://www.google.com/search?q=%s&hl=en"))) (utf-8 '(("google" "http://www.google.com/search?q=%s&ie=utf-8" utf-8) ("google-en" - "http://www.google.com/search?q=%s"))) + "http://www.google.com/search?q=%s&hl=en&ie=utf-8" + utf-8))) (t '(("google" "http://www.google.com/search?q=%s")
いくつか補足説明を。
utf-8 を扱える場合は、極力、utf-8 を入力エンコーディングとして使うようにした。最近の google は、è のようなアクセント付記号も、ちゃんと理解してくれる。次の検索結果を比べられたし。
英語で検索する場合は、&hl=en を加えている。ただし、次のコードには手を加えていない。
(t '(("google" "http://www.google.com/search?q=%s") ("google-ja" "http://www.google.com/search?q=%s&hl=ja&lr=lang_ja&ie=Shift_JIS" shift_jis))))
これは、日本国外から使う場合を考慮してのこと。
例えば、フランスから "google" で検索をかけてる人は、自動的に Google.fr の検索結果が現れていると考えられる。従って、"google" を強制的に英語ページの検索にしてしまうのは、いけないと思った。
突っ込み、etc... あれば、どうぞコメントよろしく。