php.netのあいまい検索を使ってJavaScriptのリファレンスを検索する

php.netの右上にある関数検索は、関数の名前が正確に思い出せずに間違った名前を入れてしまったときでも、入力された名前に似ている候補が表示されるようになっています。

自分はこのリファレンスを Firefoxの Quick Search を使って利用しています。 アドレスバーに php get_file_contents と入力すると http://jp2.php.net/manual-lookup.php?lang=ja&pattern=get_file_contentsに展開されて、リファレンスが見られるようにしています。こうしておくと base64_encode だったか base64encode だったか encode_base64 だったかわからない、というときも、一度検索すれば名前を知ることができます。ちなみに正解はbase64_encodeです。(PHPならvimの omnifunc completion をちゃんと使いこなせば問題解決なのですが、設定したきり存在をずっと忘れていました...)

この検索、名前があいまいでも探せて、レスポンスもよいのでphpだけでなくほかの言語にもあったらいいなと思っていました。そんなところに おぎろぐはてな - PHPマニュアルの検索 で php.net のコンテンツをrsyncでミラーできるのを教えてもらったので、さっそくどうなっているのか調べてみました。

あいまい検索を実現しているのは quickref.php の
        // Compute similarity of the name to the requested one
        if (function_exists('similar_text') && !empty($notfound)) {
            similar_text($funcname, $notfound, $p);
            $temp[$entry] = $p;
        }
の部分。PHPには similar_text という二つの文字列が似ている度合いを計算してくれる関数があるのをこのとき知りました。それもPHP4からあります。PHPは文字列の類似性判定をする関数が豊富で、このほかにも levenshtein, soundex, metaphone があるそうです。 候補の表示ロジックは安直で、検索された文字列とPHPの持っている全部の関数との類似性を算出して、類似性が高い順で並べる仕組みになっていました。文字列も長くて10バイト、関数もせいぜい数百しかないのでこのアプローチでも十分なレスポンスが出るのでしょう。

というわけで、php.netの関数検索のロジックをまねしてjavascriptのリファレンスを検索する javascript reference search をつくりました。リファレンスは mozilla developer center の Gecko DOM Reference と Core JavaScript 1.5 Reference を参照しています。

下の画像のように
Firefoxの Quick Search でurlを http://labs.gmo.jp/projects/similar_search/lookup.php?pattern=%s に設定すれば、アドレスバーから js getelements と入れることで getelements を検索することができます。同じ名前の関数があるときは直接MDCのページか表示され、同じ名前のものがなければ似ている名前の一覧が表示されるようになっています。ちなみに php.net にあるオリジナルが、よくにているものは太字で表示されるようになっていたので、よく似ているものは太字で表示するようにしてあります。


tags

  • 「php.netのあいまい検索を使ってJavaScriptのリファレンスを検索する」のはてなブックマーク数
  • 「php.netのあいまい検索を使ってJavaScriptのリファレンスを検索する」deliciousブックマーク数
  • 「php.netのあいまい検索を使ってJavaScriptのリファレンスを検索する」をはてなブックマークに追加
  • save "php.netのあいまい検索を使ってJavaScriptのリファレンスを検索する" to del.icio.us
  • 「php.netのあいまい検索を使ってJavaScriptのリファレンスを検索する」をリアルタイムブログ検索
  • permalink
  • WWW::MechanizeとSeleniumIDEで勝手APIをかんたんに作る
  • vim.org にある tips からみつけた目が覚めるようなコマンド

comments

TypeKey Enabled
スタイル用のHTMLタグが使えます。
*required

trackbacks

トラックバック元エントリにこのエントリへのリンクがない場合はトラックバックを受け付けません。

http://labs.gmo.jp/mt/mt-tb.cgi/123
©2010 Kentaro Kumagai, GMO Internet Labs., GMO Internet, inc.
bits and bytes
2007 .04. 27 19:24

tagcloud

  • API1
  • C/C++2
  • E4X1
  • FUSE2
  • Firefox18
  • HTML4
  • IE1
  • MySQL1
  • OSX4
  • Opera2
  • PHP4
  • XML1
  • XPCOM4
  • XPath3
  • apache2
  • binary2
  • book1
  • data11
  • debug4
  • design1
  • experiments3
  • extension10
  • google gears1
  • google maps API1
  • greasemonkey3
  • httpd5
  • javascript17
  • linux1
  • logging2
  • mobile3
  • perl4
  • tips4
  • tool11
  • vim2
  • visualization2
  • widget1
  • wii1
  • windows7
  • サービス6
  • 和訳1

Archives

  • 2008.02 (6)
  • 2008.01 (3)
  • 2007.12 (4)
  • 2007.11 (5)
  • 2007.10 (4)
  • 2007.09 (4)
  • 2007.08 (4)
  • 2007.07 (8)
  • 2007.06 (7)
  • 2007.05 (4)
  • 2007.04 (5)
  • 2007.03 (6)
  • 2007.02 (4)
  • 2007.01 (6)

about

  • bits and bytesのXML
  • 「bits and bytes」のCreative Commons
  • Powered by Movable Type
  • イベントと地図 - モグ
  • Use ecto to blog!
  • bits and bytesのはてなブックマーク数
  • bits and bytesをMy Yahoo!に追加
  • Subscribe with Bloglines