【毎日開催】
15記事にいいね!で1ポイント
10秒滞在
いいね! --/--
おめでとうございます!
ミッションを達成しました。
※「ポイントを獲得する」ボタンを押すと広告が表示されます。
x

mywkfmnrのホームページ

フリーページ

お気に入りブログ

源氏物語の世界 jooxさん
一日一冊:読書日記… 本のソムリエさん
おびやまロボット研… CPU4Eduさん
2003年11月18日
XML
カテゴリ:カテゴリ未分類
この全文検索では、検索対象に本文だけでなく、現代語訳や與謝野晶子訳、ローマ字版、さらには注釈、出典、校訂、和歌などを指定して検索できるので、応用範囲が広がります。
また、検索結果は本文、現代語訳、與謝野晶子訳、ローマ字版が対照表示されます。検索対象に注釈、出典、校訂を指定した場合は、その検索対象も対照表示されます。
この辺は、画面例を見たほうが早いですね。



以下は、その苦労話です。

源氏物語は、かなりの長編小説で、全部読み干すにはかなりの根気が必要になりますが、その本文を全部入力したcsvファイルは、わずかに2MBでした。これは意外でした。私が一年以上かけて苦労の末やっと読み終えた源氏物語が、非圧縮でも、わずか2MBだったなんて。本文と現代語訳の差があり、現代語訳の方が多少長くなる傾向がありますが、せいぜい数割程度。たいした差はありません。ちなみに、渋谷教授の現代語訳は2.4MB。
この程度の容量だと、全文検索対象としてはかなり小さい方です。Web上のCGIとして全文検索機能を提供するならともかく、ローカルマシン上で検索するなら、全文検索エンジンなど使わなくても、全部メモリ上に読み込んで検索するだけで、実用的な性能が得られます。
メモリ上で検索する場合に使い易いのは、Microsoft Accessでcsvファイルへのリンクテーブルを、通常のデータベースのテーブルのように操作できる機能。csvファイルへの変換が終わったとき、真っ先に試してみたのはこの機能でした。
複数のcsvファイルを結合するクエリをいくつか作り、Microsoft Accessのデータシートビューのフォームフィルタを使って、かなり複雑な検索をさせてみましたが、検索結果が数十~数百件程度の常識的なものになる検索なら、十分に実用的な性能で検索結果が得られることを確認しました。

次のステップは、これをAccessを持っていない人にも使えるようにすること。Accessの場合、データベース操作はJetデータベースエンジンが担っており、Accessは、このデータベースエンジンのフロントエンドの位置づけになっています。そして、このJetデータベースエンジンはWindowsを構成するコンポーネントの一つとして無償で提供されており、ADOやDAOといった、やはり無償提供のActiveXコントロールを介してアクセスできます。

そこで、今回は、DAOを使ってAccessのmdbファイルを操作するHTMLアプリケーションとして、全文検索プログラムを書きました。

実は、最初は、あらかじめAccessで作ったmdbファイル(Jetデータベース)をADOで操作するという方法で全文検索プログラムを書きました。この方法は、Jetデータベースを操作するプログラムを手軽に書ける便利な方法ですが、今回はAccessを持っていない人のことも考える必要があり、いつもと勝手が違っていて、ウマくいきません。結局、ADOなどを使って書いていたところが、少しずつDAOに代わっていき、結局最後はDAOばかりでADOは跡形なくなってしまいました。本当は、この辺のところを、もう少し掘り下げて書きたいと思っていたのですが、難しくなりすぎる嫌いがあるので、やめることにします。





お気に入りの記事を「いいね!」で応援しよう

最終更新日  2003年12月07日 13時27分07秒
コメント(0) | コメントを書く


PR


© Rakuten Group, Inc.