KeyCloudを少しバージョンアップしました。

  • キーワードを押したときに、ページ内検索を実施するようにしました。文字がハイライトして、最初のマッチ位置に移動します。(タグの中身まで検索してしまうので、少し表示がおかしくなることがあります。)
  • 同時にGoogleのサイト検索を行うことも可能です。
  • 文字サイズを指定最大サイズまでの切り捨てから正規化処理に変更しました。
  • キーワードの抽出を少し工夫して、英語や日本語が変に長くなるのを修正。
  • 負荷軽減のため、URL先の更新があるまで以前の結果をキャッシュします。(更新されるまでパラメータを変えても反映されないので注意してください)

<script language=”JavaScript” type=”text/javascript” src=”http://saya.s145.xrea.com/x/keyjs2.cgi?url=(解析対象HPのURL)&num=(キーワードの最大数)&encode=(文字コード)&max=(文字サイズの最大)&bgcolor=(ハイライト文字背景色)&mode=(モード)”></script>
keyjs2.cgiに変わっています。
url以外はオプション
num: 数字(default:100)
encode: eucまたはsjis(default:euc)
max: ピクセル数(default:24)
bgcolor: 16進数(default:FFFF00) #は不要
mode: googleまたはfind(default:google) googleを指定するとgoogleのサイト検索が別ウィンドウで立ち上がります。


Javascriptでのページ内検索は少し手間取りました。メインの関数は下記のような感じです。
もっと良い方法があればぜひ教えてください。

function findword(key){
if(key==”){
return;
}
if(oldhtml){
document.body.innerHTML=oldhtml; //別のキーワードでの検索による書き換えを元に戻す
}
var str='<a name=”kcfw” style=”background-color:#’+bgcolor+’;”>’+key+'</a>’;
oldhtml=document.body.innerHTML; 
var kc=document.getElementById(‘keycloud’).innerHTML; //KeyCloudの部分は検索しないように
document.getElementById(‘keycloud’).innerHTML=”; 
document.body.innerHTML=document.body.innerHTML.replace(RegExp(key,’ig’),str); //ハイライトさせます
document.getElementById(‘keycloud’).innerHTML=kc;
window.location.hash = ‘kcfw’;  //最初の検索結果に移動
}
// oldhtmlはグローバル変数

1件のコメント

  1. こんにちは。
    KeyCloud、すばらしいですね。
    でも、残念ながら自分のサイトでは上手く動いていないようです。URLは動的なページを指定できないのでしょうか?
    あと、自分のサイトにインストールできれば非常にうれしいと思っています。コードをご提供いただけないでしょうか?
    よろしくお願いします。

  2. gokurakuさん、コメントありがとうございます。
    トラックバックを頂いてから少し調べていたのですが、perlのLWPでgokurakuさんのページをgetで取得しようとしたときにうまく取得できず何も表示されない結果になっているようです(タイムアウトを長めに指定しても取得できませんでした)。そこさえ解決すれば表示できると思います。
    あと、コード自体はperlの短いコードで提供可能ですが、茶筌とTermExtractをインストールする必要があります(とりあえず動かすために書いているので、かなり汚いコードです・・・)。

  3. sayaさん、こんにちは。
    調べてみたのですが、LWPを拒否しているわけではないようです。
    chasenとTermExtractはインストールしてみました。
    コードをいただけると助かります。送っていただけるならメールアドレスをご連絡します。
    よろしくお願いします。

  4. gokurakuさん
    了解しました。コードを送りますので、メールアドレスをコメントのメールアドレス欄に記入して下さい。
    よろしくお願いします。

コメントを残す