Greasemonkeyだけで実現する閲覧履歴の全文検索(まだ試作)

| コメント(0) | トラックバック(0) | Greasemonkeyだけで実現する閲覧履歴の全文検索(まだ試作) | この記事をはてなブックマークに登録 このエントリのはてなブックマーク数

ec834b7e7924147ed5b0e0b04eeca412.png

まぁ、ブラウザの機能として付いてるかもしれないですが、試作・習作ということで作ってみました。 もちろんインストールが可能ですが、閲覧ページのキーワードインデックスを作るため、体感で分かるくらいFirefoxの動作が遅くなります。ご注意ください。

Search on the History(SorH) - search_on_the_history.user.js

機能

  • about:blankページで履歴検索ができます
  • http://から始まるページだけ検索可能です

Greasemonkeyスクリプト中でやってること

ページを閲覧すると、内蔵するはてなの公開した本文抽出Javascriptライブラリを利用してページの本文を抽出します。

Yahoo! JAPANの日本語形態素解析APIに本文を投げ、名詞だけを抽出します。

ページのURLをMD5でハッシュ化した値をキーに、タイトルや本文をGM_setValueで保存します。 併せて、上記形態素解析されたキーワードもMD5ハッシュ値をキーに、出現するページへのポインタやキーワードの出現回数と併せてGM_setValueで保存します。 この2つのキー・バリュー型のDBが検索用インデックスになります。

ちなみに、Greasemonkeyスクリプトから使えるGM_setValueとGM_getValueをキー・バリュー型DBとして使いやすくするライブラリを自作して使ってます。

about:blankページでは、簡単なフォームを用意して、履歴検索のためのキーワード入力を受け付けます。

入力されたキーワードを先ほどの検索用インデックスに問い合わせ、得られたページのリストをスコア順にソートして表示します。

このときのページスコアは、キーワードDBとページDBを元にtf-idf(文書内のキーワード種類数で正規化)を用いて計算しています。tf-idfはスクリプトの191行目くらいです。

まとめ

とりあえず、公開されているいろんなライブラリやWebAPIを利用すると、Greasemonkeyスクリプト(Javascript)だけでもおれおれ検索エンジンが作れてしまいました。

ただ、Gathering(ページをインデックス化する)時にブラウザが固まるほど処理が重たくなってしまっているので、パフォーマンスを改善することが次に必要かと思ってます。

また、Searching(検索)時も今は数十~数百ページからの検索なので比較的高速ですが、保持するページ数が増えたときにもパフォーマンスが悪化しそうな気がしています。

最後に

まとめの後になりましたが、このGreasemonkeyスクリプトでは下記のライブラリやWebAPIを利用させていただいています。本当にありがとうございます。

トラックバック(0)

トラックバックURL: http://blog.fulltext-search.biz/mt/mt-tb.cgi/72

コメントする

カテゴリ

  • サービス

あわせてなかのひとのはてな

あわせて読みたい
この日記のはてなブックマーク数
OpenID対応しています OpenIDについて

このブログ記事について

このページは、noriakiが2009年10月13日 02:00に書いたブログ記事です。

ひとつ前のブログ記事は「androidケータイ(HT-03A)のアクセス元IPとUA」です。

次のブログ記事は「Support tweeting - TwitterのWebページをちょっと使いやすくするGreasemonkeyスクリプト」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。