検索用スクリプト「りびる」を作ってみる
作ったXML形式の目録を検索する仕組み、を考えて見ます。
一応、名前は「りびる」(libill)とでもしておきましょう。
目標はサーバサイドのプログラムを使わないこと。
つまり、javascriptだけで検索できるようなものがいいです。
調べてみると、javascriptでXMLを扱う場合、いくつも関数あるらしいので、
それを組み合わせるだけで簡単に出来そうです。
まずファイルを開いて、(ここはいろんなところに手順が載ってます)
getElementsByTagNameで検索対象のノードを探し出し、
indexOfで検索する、という感じですね。
複数の単語で検索できるように、
ノードの文字列は結合させたあとに、検索するようにします。
javascriptが書き付けないので、多少苦労しましたが、
ネットに落ちているソースをつぎはぎすれば、簡単に完成しました。
で、わざわざソースをいじって検索対象になるファイルを変更したりするのは、
面倒くさいので、設定ファイルで、検索対象ファイルなどを指定できるようにします。
せっかくなので、設定ファイルも、XMLで作ります。
<files>
<file name="libill.xml" describe="りぶりぶ目録" root="libill" checked="true">
<facter 検索="false" 一覧="true" 表記="ラベル">label</facter>
<facter 検索="false" 一覧="true" 表記="状態">jotai</facter>
<facter 検索="true" 一覧="true" 表記="タイトル">mtitle</facter>
<facter 検索="true" 一覧="false" 表記="タイトルヨミ">metitle</facter>
<facter 検索="true" 一覧="true" 表記="責任表示">author</facter>
<facter 検索="true" 一覧="false" 表記="ISBN">isbn</facter>
<facter 検索="false" 一覧="true" 表記="刊年">year</facter>
</file>
<file name="libill2.xml" describe="りぶりぶ目録2" root="libill" checked="true">
<facter 検索="false" 一覧="true" 表記="ラベル">label</facter>
<facter 検索="false" 一覧="true" 表記="状態">jotai</facter>
<facter 検索="true" 一覧="true" 表記="タイトル">mtitle</facter>
<facter 検索="true" 一覧="false" 表記="タイトルヨミ">metitle</facter>
<facter 検索="true" 一覧="true" 表記="責任表示">author</facter>
<facter 検索="true" 一覧="false" 表記="ISBN">isbn</facter>
<facter 検索="false" 一覧="true" 表記="刊年">year</facter>
</file>
</files>
こんな感じで、各タグを検索対象とするか、一覧表示で表示するかを指定します。
で、実際にやってみると……やっぱり結構時間がかかることが判明。
うーん。
一応、名前は「りびる」(libill)とでもしておきましょう。
目標はサーバサイドのプログラムを使わないこと。
つまり、javascriptだけで検索できるようなものがいいです。
調べてみると、javascriptでXMLを扱う場合、いくつも関数あるらしいので、
それを組み合わせるだけで簡単に出来そうです。
まずファイルを開いて、(ここはいろんなところに手順が載ってます)
getElementsByTagNameで検索対象のノードを探し出し、
indexOfで検索する、という感じですね。
複数の単語で検索できるように、
ノードの文字列は結合させたあとに、検索するようにします。
javascriptが書き付けないので、多少苦労しましたが、
ネットに落ちているソースをつぎはぎすれば、簡単に完成しました。
で、わざわざソースをいじって検索対象になるファイルを変更したりするのは、
面倒くさいので、設定ファイルで、検索対象ファイルなどを指定できるようにします。
せっかくなので、設定ファイルも、XMLで作ります。
<files>
<file name="libill.xml" describe="りぶりぶ目録" root="libill" checked="true">
<facter 検索="false" 一覧="true" 表記="ラベル">label</facter>
<facter 検索="false" 一覧="true" 表記="状態">jotai</facter>
<facter 検索="true" 一覧="true" 表記="タイトル">mtitle</facter>
<facter 検索="true" 一覧="false" 表記="タイトルヨミ">metitle</facter>
<facter 検索="true" 一覧="true" 表記="責任表示">author</facter>
<facter 検索="true" 一覧="false" 表記="ISBN">isbn</facter>
<facter 検索="false" 一覧="true" 表記="刊年">year</facter>
</file>
<file name="libill2.xml" describe="りぶりぶ目録2" root="libill" checked="true">
<facter 検索="false" 一覧="true" 表記="ラベル">label</facter>
<facter 検索="false" 一覧="true" 表記="状態">jotai</facter>
<facter 検索="true" 一覧="true" 表記="タイトル">mtitle</facter>
<facter 検索="true" 一覧="false" 表記="タイトルヨミ">metitle</facter>
<facter 検索="true" 一覧="true" 表記="責任表示">author</facter>
<facter 検索="true" 一覧="false" 表記="ISBN">isbn</facter>
<facter 検索="false" 一覧="true" 表記="刊年">year</facter>
</file>
</files>
こんな感じで、各タグを検索対象とするか、一覧表示で表示するかを指定します。
で、実際にやってみると……やっぱり結構時間がかかることが判明。
うーん。
スポンサーサイト