検索原人
ver.1.0
 
 ◆サンプル

 
    <機能と特徴>
 
 ・JavaScriptで動作する検索エンジンです。
 
 ・長文からの検索が可能です。
 
 ・曖昧検索(大文字・小文字、全角・半角問わず)や
  読みや別名での検索が可能な辞書機能付き。
 



 

公開日 2003.1.8
最終更新日 ---
バージョン ver.1.0
動作確認 IE6.0,NN4.7,NN7.0,Opera7.2
cookie 不使用
CSS 使用
更新履歴 ---    

 

☆★☆使い方☆★☆
 
 初心者向け解説   中級者向け解説   ダウンロード 

1.カスタマイズフォームを使って設定をしてください。

2.ソース1を<head>〜</head>の間に書き込んでください。

3.ソース2を<body>〜<body>の間に書き込んでください。

4.ソース3を<body>〜</body>の間の
  ソース2を書き込んだ位置以降で
  検索フォームを設置したい場所に書き込んでください。

5.ブラウザでテストしてみてください。
  正常に動作すれば設置は完了です。
 
 
 初心者向け解説   中級者向け解説   ダウンロード 

1.ソース1を<head>〜</head>の間に書き込んでください。

2.ソース2を<body>〜<body>の間に書き込んでください。

3.ソース3を<body>〜</body>の間の
  ソース2を書き込んだ位置以降で
  検索フォームを設置したい場所に書き込んでください。

4.ソース2にデータベースを書き込んでください。
  <textarea name="g_kekka1">〜</textarea>の間に
  検索結果に表示される文字、
  <textarea name="g_databese1">〜</textarea>の間に
  検索対象となるデータベースを書き込んでください。
<textarea name="g_kekka1">
検索結果に表示される文字
</textarea>

<textarea name="g_databese1">
検索対象となるデータベース
</textarea>
5.ブラウザでテストしてみてください。
  正常に動作すれば設置は完了です。
 
 
 初心者向け解説   中級者向け解説   ダウンロード 
 
ダウンロードする形式を選択してください。

 【スクリプトを1つのページに組み込む】 

1.カスタマイズフォームを使って設定をする場合は、
  ダウンロードの前に設定をしてください。

2.右のボタンを押してファイルをダウンロードしてください。

 【スクリプトを外部ファイルにする(設定は一括)】 

1.カスタマイズフォームを使って設定をする場合は、
  ダウンロードの前に設定をしてください。

2.右のボタンを押して外部ファイルをダウンロードしてください。
 
3.保存した外部ファイルのファイル名を入力してください。
   (ファイルのパスでも可)
 
4.右のボタンを押してHTMLファイルをダウンロードしてください。

 【スクリプトを外部ファイルにする(設定は各ページ毎)】 

1.カスタマイズフォームを使って設定をする場合は、
  ダウンロードの前に設定をしてください。
 
2.右のボタンを押して外部ファイルをダウンロードしてください。
 
3.保存した外部ファイルのファイル名を入力してください。
   (ファイルのパスでも可)
 
4.右のボタンを押してHTMLファイルをダウンロードしてください。
 
5.複数のページが必要な場合は、カスタマイズフォームで設定をし
  再度HTMLファイルのみダウンロードしてください。
 

 
 
 
 カスタマイズフォーム   補足説明   改造方法 
 
件数表示: (タグ可)
*文中に###を入れると該当件数が代入されます。
検索キーワードの
入力がない時のメッセージ:
データベースの文字の表示:  
データベースの文字の最大字数: (半角数字:正の整数)
 
 【検索結果画面のスタイル】 
<body>のスタイル: (CSS構文)
検索結果のスタイル: (CSS構文)
データベースの文字のスタイル: (CSS構文)
 
 【辞書機能設定】 
辞書機能の文字の数:
☆★☆1個目の辞書機能☆★☆
 データベース内の文字:  
 読み方、別名など:
*読み、別名等が複数の場合は,(半角のコンマ)で区切って書き込んでください。
 
 【データベース設定】 
データベースの数:
☆★☆1個目のデータベース☆★☆
 検索結果の文字: (タグ可)
 検索対象のデータベース:  
 
 
 カスタマイズフォーム   補足説明   改造方法 
 
辞書機能についての解説

 辞書機能を使うとデータベース内で使用している文字の
 読み方や別名を指定する事ができます。
 例えばデータベース内に『肉まん』という文字があったとして
 検索の際『にくまん』や『豚まん』と入力した場合でも
 『肉まん』と同じと見なすようにすることができます。

 上のように指定したい場合は
 データベース内の文字は『肉まん』、
 読み方、別名などは『にくまん』『豚まん』となります。
 
 カスタマイズフォーム   補足説明   改造方法 
 
検索結果の件数表示を変更する。(タグ可)

 //設定〜//ここまでを1行目を変更してください。
 文中に###を入れると該当件数が代入されます。
g_kensu   = '###件見つかりました。<br>';
検索キーワードが入力されていない時のメッセージを変更する。(ダイアログ)

 //設定〜//ここまでを2行目を変更してください。
g_nokey   = '検索キーワードを入力してください。';
データベースの文字の表示の有無を変更する。

 //設定〜//ここまでを3行目を変更してください。
 検索結果にデータベースの内容を表示する場合はyes
 表示しない場合はnoを指定してください。
g_keyword = 'yes';
データベースの文字の最大字数を変更する。(半角数字:正の整数)

 //設定〜//ここまでを4行目を変更してください。
 検索結果にデータベースの内容を表示する設定の場合のみ有効です。
g_length  = 100;
検索結果画面のスタイルを変更する。(CSS構文)

 //設定〜//ここまでを5行目以降をCSS構文で変更してください。
 5行目が<body>,6行目が検索結果,7行目がデータベースのスタイルです。
g_style1  = 'color:#000000;background:#ffffff;';
g_style2  = '';
g_style3  = 'font-size:84%;margin:5px;';
辞書機能を変更する。

 ソース2の<textarea name="g_dictionary">〜</textarea>の間に書き込んでください。
 書き方はデータベース内の文字[読み方、別名など]となります。
 詳しくは補足説明をご覧ください。
<textarea name="g_dictionary">
肉まん[にくまん,ぶたまん,豚まん]
</textarea>
辞書を複数にする。

 ソース2の<textarea name="g_dictionary">〜</textarea>の間に
 上記『辞書機能を変更する』と同じ要領で書き込んでください。
<textarea name="g_dictionary">
肉まん[にくまん,ぶたまん,豚まん]
餡まん[あんまん]
</textarea>
データベースの内容を書き込む。(タグ可:テキストエリア)

 ソース2の10〜20行目を変更してください。
 <textarea name="g_kekka1">〜</textarea>の間に
 検索結果に表示される文字、
 <textarea name="g_databese1">〜</textarea>の間に
 検索対象となるデータベースを書き込んでください。
<textarea name="g_kekka1">
検索結果に表示される文字
</textarea>

<textarea name="g_databese1">
検索対象となるデータベース
</textarea>
データベースを複数にする。

 ソース2の10〜20行目を10行1組で増やし
 該当箇所の数字を変更してください。
<textarea name="g_kekka2">
検索結果に表示される文字その2
</textarea>

<textarea name="g_databese2">
検索対象となるデータベースその2
</textarea>
 
 
  

ソース1(以下のソースを<head>〜</head>の間に書き込んでください)  
 
<style type="text/css"><!--
.g_none {display:none;}
--></style>

<script language="JavaScript" type="text/javascript"> <!--//Script Created by あう,http://www5c.biglobe.ne.jp/~horoau/ //ver.1.0
//設定 g_kensu = '###件見つかりました。<br>'; //件数表示 g_nokey = '検索キーワードを入力してください。'; //検索キーワードが入力されていない時のメッセージ g_keyword = 'yes'; //データベースの文字の表示の有無 g_length = 100; //データベースの文字の最大字数 g_style1 = 'color:#000000;background:#ffffff;'; //検索結果画面の<body>のスタイル g_style2 = ''; //検索結果画面の検索結果のスタイル g_style3 = 'font-size:84%;margin:5px;'; //データベースの文字のスタイル //ここまで
g_hiragana = 'あ,ぁ,い,ぃ,う,ぅ,え,ぇ,お,ぉ,'; g_hiragana += 'が,ぎ,ぐ,げ,ご,か,き,く,け,こ,'; g_hiragana += 'ざ,じ,ず,ぜ,ぞ,さ,し,す,せ,そ,'; g_hiragana += 'だ,ぢ,づ,で,ど,た,ち,つ,て,と,'; g_hiragana += 'な,に,ぬ,ね,の,'; g_hiragana += 'ば,び,ぶ,べ,ぼ,ぱ,ぴ,ぷ,ぺ,ぽ,は,ひ,ふ,へ,ほ,'; g_hiragana += 'ま,み,む,め,も,'; g_hiragana += 'や,ゃ,ゆ,ゅ,よ,ょ,'; g_hiragana += 'ら,り,る,れ,ろ,'; g_hiragana += 'わ,ゎ,を,ん,ゐ,ゑ';
g_katakana = 'ア,ァ,イ,ィ,ウ,ゥ,エ,ェ,オ,ォ,'; g_katakana += 'ガ,ギ,グ,ゲ,ゴ,カ,キ,ク,ケ,コ,'; g_katakana += 'ザ,ジ,ズ,ゼ,ゾ,サ,シ,ス,セ,ソ,'; g_katakana += 'ダ,ヂ,ヅ,デ,ド,タ,チ,ツ,テ,ト,'; g_katakana += 'ナ,ニ,ヌ,ネ,ノ,'; g_katakana += 'バ,ビ,ブ,ベ,ボ,パ,ピ,プ,ぺ,ポ,ハ,ヒ,フ,ヘ,ホ,'; g_katakana += 'マ,ミ,ム,メ,モ,'; g_katakana += 'ヤ,ャ,ユ,ュ,ヨ,ョ,'; g_katakana += 'ラ,リ,ル,レ,ロ,'; g_katakana += 'ワ,ヮ,ヲ,ン,ヰ,ヱ';
g_hankana = 'ア,ァ,イ,ィ,ウ,ゥ,エ,ェ,オ,ォ,'; g_hankana += 'ガ,ギ,グ,ゲ,ゴ,カ,キ,ク,ケ,コ,'; g_hankana += 'ザ,ジ,ズ,ゼ,ゾ,サ,シ,ス,セ,ソ,'; g_hankana += 'ダ,ヂ,ヅ,デ,ド,タ,チ,ツ,テ,ト,'; g_hankana += 'ナ,ニ,ヌ,ネ,ノ,'; g_hankana += 'バ,ビ,ブ,ベ,ボ,パ,ピ,プ,ぺ,ポ,ハ,ヒ,フ,ヘ,ホ,'; g_hankana += 'マ,ミ,ム,メ,モ,'; g_hankana += 'ヤ,ャ,ユ,ュ,ヨ,ョ,'; g_hankana += 'ラ,リ,ル,レ,ロ,'; g_hankana += 'ワ,ヮ,ヲ,ン';
g_eisuu = '0,1,2,3,4,5,6,7,8,9,'; g_eisuu += 'A,B,C,D,E,F,G,H,I,J,K,L,M,N,'; g_eisuu += 'O,P,Q,R,S,T,U,V,W,X,Y,Z,'; g_eisuu += 'a,b,c,d,e,f,g,h,i,j,k,l,m,n,'; g_eisuu += 'o,p,q,r,s,t,u,v,w,x,y,z';
g_haneisuu = '0,1,2,3,4,5,6,7,8,9,'; g_haneisuu += 'A,B,C,D,E,F,G,H,I,J,K,L,M,N,'; g_haneisuu += 'O,P,Q,R,S,T,U,V,W,X,Y,Z,'; g_haneisuu += 'a,b,c,d,e,f,g,h,i,j,k,l,m,n,'; g_haneisuu += 'o,p,q,r,s,t,u,v,w,x,y,z';
g_kigou = '!,”,#,$,%,&,’,(,),*,+,,,'; g_kigou += '−,.,/,:,;,<,=,>,?,@,[,¥,],^,_,`,{,|,},〜';
g_hankigou = '!,",#,$,%,&,\',(,),*,+,,'; g_hankigou += '-,.,/,:,;,<,=,>,?,@,[,\\\\,],^,_,`,{,|,},~';
g_hiragana = g_hiragana.split(","); g_katakana = g_katakana.split(","); g_hankana = g_hankana.split(","); g_eisuu = g_eisuu.split(","); g_haneisuu = g_haneisuu.split(","); g_kigou = g_kigou.split(","); g_hankigou = g_hankigou.split(",");
g_hankigou[11] = ',';
function kensaku_genzin(posi,g_hit2) {with(document) {g_check = new Array(); g_dic2 = new Array(); g_key = posi.form.elements["g_kensaku_key"].value; if(!g_key) {alert(g_nokey); return false;} while(g_key.indexOf(" ") != -1) {g_key = g_key.replace(" "," ");} g_key = g_key.split(" "); for(i in g_key) {g_key[i] = new Array(g_key[i]); g_key[i][0] = g_fuzzy(g_key[i][0]); if(g_key[i][0].search(/[^ぁ-ん]/) == -1) {g_key[i][1] = g_key[i][0]; for(ii in g_hiragana) {while(g_key[i][1].indexOf(g_hiragana[ii]) != -1) {g_key[i][1] = g_key[i][1].replace(g_hiragana[ii],g_katakana[ii]);}}}} if(document.all || document.getElementById) {g_dic = forms["g_form"].elements["g_dictionary"].value.toUpperCase();} else if(document.layers) {g_dic = layers["g_layer"].document.forms["g_form"].elements["g_dictionary"].value.toUpperCase();} g_dic = escape(g_dic); if(document.all || document.layers) {g_temp = "%0D%0A";} else if(document.getElementById) {g_temp = "%0A";} while(g_dic.indexOf(g_temp) != -1) {g_dic = g_dic.replace(g_temp,"");} g_dic = unescape(g_dic); g_dic = g_dic.split("]"); if(document.all || document.getElementById) {for(a in g_dic) {g_dic[a] = g_dic[a].replace('[',','); g_dic[a] = g_dic[a].split(","); for(b=1;b<g_dic[a].length;b++) {g_dic[a][b] = g_fuzzy(g_dic[a][b]);}}} else if(document.layers) {for(a in g_dic) {g_dic[a] = escape(g_dic[a]); g_dic[a] = g_dic[a].replace('%5B','%2C'); g_dic[a] = unescape(g_dic[a]); g_dic[a] = g_dic[a].split(","); for(b=1;b<g_dic[a].length;b++) {g_dic[a][b] = g_fuzzy(g_dic[a][b]);}}} for(i in g_dic) {for(ii=1;ii<g_dic[i].length;ii++) {for(iii in g_key) {if(g_key[iii][0].indexOf(g_dic[i][ii]) != -1) {g_key[iii][g_key[iii].length] = g_dic[i][0];}}}} i = 1; g_hit = ""; g_hit_p = 0 if(document.all || document.getElementById) {g_posi = forms["g_form"];} else if(document.layers) {g_posi = layers["g_layer"].document.forms["g_form"];} while(g_posi.elements["g_databese"+i]) {g_data = g_posi.elements["g_databese"+i].value.toUpperCase(); g_data = g_fuzzy(g_data); g_data = escape(g_data); while(g_data.indexOf(g_temp) != -1) {g_data = g_data.replace(g_temp,"");} g_data = unescape(g_data); i++; for(ii in g_key) {g_check = 0; for(iii in g_key[ii]) {if(g_data.indexOf(g_key[ii][iii]) != -1) {g_check = 1; break;}} if(g_check == 0) {break;}} if(g_check == 1) {g_hit += '<div class="g_answer1">'+g_posi.elements["g_kekka"+(i-1)].value+'</div>'; if(g_keyword == "yes") {g_keywords = g_posi.elements["g_databese"+(i-1)].value.substring(0,g_length); if(g_posi.elements["g_databese"+(i-1)].value.length > g_length) {g_keywords += '...';} g_hit += '<div class="g_answer2">'+g_keywords+'</div>';} g_hit_p++;}} g_hit = g_kensu.replace("###",g_hit_p)+g_hit; g_hit2 ="<html><head><title>検索結果</title>"; g_hit2 +='<style type="text/css">\n<!-\-\n'; g_hit2 +='body {'+g_style1+'}\n'; g_hit2 +='.g_answer1{'+g_style2+'}\n'; g_hit2 +='.g_answer2{'+g_style3+'}\n'; g_hit2 +='-\-><\/style>'; g_hit2 +="<body>"+g_hit+"</body></html>"; open(); write(g_hit2); close(); return false;}}
function g_fuzzy(g_data) {with(document) {if(g_data.search(/[ヲ-ン]/) != -1) {for(ii in g_hankana) {while(g_data.indexOf(g_hankana[ii]) != -1) {g_data = g_data.replace(g_hankana[ii],g_katakana[ii]);} if(g_data.search(/[ヲ-ン]/) == -1) {break;}}} if(g_data.search(/[0-9|A-Z|a-z]/) != -1) {for(ii in g_eisuu) {while(g_data.indexOf(g_eisuu[ii]) != -1) {g_data = g_data.replace(g_eisuu[ii],g_haneisuu[ii]);} if(g_data.search(/[0-9|A-Z|a-z]/) == -1) {break;}}} if(g_data.search(/[!-/|:-@|[-`|{-〜]/) != -1) {for(ii in g_kigou) {while(g_data.indexOf(g_kigou[ii]) != -1) {g_data = g_data.replace(g_kigou[ii],g_hankigou[ii]);} if(g_data.search(/[!-/|:-@|[-`|{-〜]/) == -1) {break;}}} return(g_data);}}
with(document) {open(); write('<style type="text/css">\n<!-\-\n'); if(document.layers) {write('.g_none {display:block;}');} write('\n-\->\n<\/style>\n'); close();}
// --> </script>

ソース2(以下のソースを<body>〜<body>の間に書き込んでください)  
 
<div class="g_none"><layer name="g_layer" clip="0,0,0,0">
<form name="g_form">

<!--辞書機能部分--> <textarea name="g_dictionary"> データベース内の文字[読み方、別名など] </textarea>
<!--データベース部分--> <textarea name="g_kekka1">
</textarea>
<textarea name="g_databese1">
</textarea>

</form></layer></div>

ソース3(以下のソースを<body>〜</body>の間に書き込んでください)  
 
<form onSubmit="return kensaku_genzin(this.elements[0]);">
<input type="text" size="30" name="g_kensaku_key">
<input type="button" value="検索" onClick="kensaku_genzin(this);"></form>
 

スクリプト無効時には動作はしません。
 <noscript>を使ってメッセージを書き込むなどしてください。


ウェブ木箱サンプル集
copyright(C) 2004 あう