1 |
<?xml version="1.0" encoding="UTF-8"?> |
2 |
|
3 |
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> |
4 |
|
5 |
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ja" lang="ja"> |
6 |
|
7 |
<head> |
8 |
<meta http-equiv="Content-Language" content="ja" /> |
9 |
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> |
10 |
<meta http-equiv="Content-Style-Type" content="text/css" /> |
11 |
<meta name="author" content="Mikio Hirabayashi" /> |
12 |
<meta name="keywords" content="Hyper Estraier, Estraier, full-text search, API" /> |
13 |
<meta name="description" content="Introduction of Hyper Estraier" /> |
14 |
<link rel="contents" href="./" /> |
15 |
<link rel="alternate" href="intro-en.html" hreflang="en" title="the English version" /> |
16 |
<link rel="stylesheet" href="common.css" /> |
17 |
<link rel="icon" href="icon16.png" /> |
18 |
<link rev="made" href="mailto:mikio@users.sourceforge.net" /> |
19 |
<title>Introduction of Hyper Estraier Version 1 (Japanese)</title> |
20 |
</head> |
21 |
|
22 |
<body> |
23 |
|
24 |
<h1>イントロダクション</h1> |
25 |
|
26 |
<div class="note">Copyright (C) 2004-2005 Mikio Hirabayashi</div> |
27 |
<div class="note">Last Update: Mon, 01 Aug 2005 00:50:38 +0900</div> |
28 |
<div class="navi">[<a href="intro-en.html" hreflang="en">English</a>] [<a href="index.ja.html">HOME</a>]</div> |
29 |
|
30 |
<hr /> |
31 |
|
32 |
<h2 id="tableofcontents">目次</h2> |
33 |
|
34 |
<ol> |
35 |
<li><a href="#introduction">はじめに</a></li> |
36 |
<li><a href="#installation">インストール</a></li> |
37 |
<li><a href="#deployment">検索機能の配備</a></li> |
38 |
<li><a href="#complement">補足</a></li> |
39 |
</ol> |
40 |
|
41 |
<hr /> |
42 |
|
43 |
<h2 id="introduction">はじめに</h2> |
44 |
|
45 |
<p>Hyper Estraierは全文検索システムです。たくさんの文書の中から、特定の語句を含むものを探して、該当するものの一覧を表示することができます。Webサイトを運営している方なら、自分のサイト専用の検索エンジンとして利用することができます。メールボックスやファイルサーバを対象とした検索ツールとして利用することもできます。</p> |
46 |
|
47 |
<p>Hyper Estraierには、次のような特徴があります。</p> |
48 |
|
49 |
<ul> |
50 |
<li>インデックスを使った高速な検索ができます。</li> |
51 |
<li>大量の文書のインデックスを短時間で作成できます。</li> |
52 |
<li>N-gram方式による漏れのない検索ができます。</li> |
53 |
<li>フレーズ検索や属性検索や類似検索をサポートします。</li> |
54 |
<li>世界各国の言語が扱えます。</li> |
55 |
<li>対象文書の所在や形式に依存しません。</li> |
56 |
<li>ライブラリとして各種製品に組み込めます。</li> |
57 |
<li>P2P連携機能をサポートします。</li> |
58 |
</ul> |
59 |
|
60 |
<p>まずは、<a href="http://rbbs.sourceforge.jp/cgi-bin/estdemo-ja/estseek.cgi">Hyper Estraierのデモサイト</a>を試してみてください。Hyper Estraierがどんなものかお分かりいただけるかと思います。</p> |
61 |
|
62 |
<p>Hyper Estraierは二つの側面を持ちます。一つ目は、全文検索システムを構築するためのライブラリであることです。つまり、プログラマが利用するAPI(Application Programming Interface)を備えています。Hyper EstraierのAPIを利用することにより、全文検索の高度な機能を自分のプログラムに簡単に組み込むことができます。</p> |
63 |
|
64 |
<p>二つ目は、上述のAPIを使ったアプリケーションであることです。検索用のインデックスを管理するコマンドと、Webインターフェイスで検索を行うためのCGIスクリプトが提供されます。それらを使うことにより、典型的な検索システムならプログラミングをしないで構築することができます。</p> |
65 |
|
66 |
<p>この文書では、Webサイトの検索機能を題材に、上述のコマンドとCGIスクリプトを使って検索システムを構築する方法をご説明します。まずは付属のコマンドとやCGIスクリプトを利用方法を習得していただき、それでは実現できない機能が必要ならばAPIを使ったアプリケーションで補うようにするとよいでしょう。Hyper Estraierは豊富な機能を備えていますが、その全ての使い方を覚える必要はありません。Webサイトの検索システムを構築するなら、この文書だけ読めば充分です。</p> |
67 |
|
68 |
<p><em>Hyper Estraierの現状の開発ステータスはベータです。APIやコマンドの仕様は変更される可能性がありますので、その点を踏まえた上でご利用ください。</em></p> |
69 |
|
70 |
<hr /> |
71 |
|
72 |
<h2 id="installation">インストール</h2> |
73 |
|
74 |
<p>Hyper Estraierのソースパッケージからのインストール方法を説明します。バイナリパッケージのインストール方法についてはそれぞれのパッケージの説明書をご覧ください。</p> |
75 |
|
76 |
<h3>前提</h3> |
77 |
|
78 |
<p>Hyper Estraierの現在バージョンは、UNIX系およびWindows NT系のOSで利用することができます。少なくとも、以下の環境では動作するはずです。</p> |
79 |
|
80 |
<ul> |
81 |
<li>Linux 2.2以降 (IA32/IA64/AMD64/SPARC/Alpha)</li> |
82 |
<li>FreeBSD 4.9以降 (IA32/Alpha)</li> |
83 |
<li>Solaris 8以降 (IA32/SPARC)</li> |
84 |
<li>Mac OS X 10.2以降 (PowerPC)</li> |
85 |
<li>HP-UX 11.11以降 (IA64/PA-RISC)</li> |
86 |
<li>Windows 2000以降 (IA32)</li> |
87 |
</ul> |
88 |
|
89 |
<p>ソースパッケージを用いてHyper Estraierをインストールするには、gccのバージョン2.95以降とmakeが必要です。それらはLinuxやFreeBSDには標準的にインストールされています。</p> |
90 |
|
91 |
<p>Hyper Estraierは、以下のライブラリを利用しています。予めそれらをインストールしておいてください。</p> |
92 |
|
93 |
<ul> |
94 |
<li><a href="http://www.gnu.org/software/libiconv/">libiconv</a> : 文字コード変換。バージョン1.9以降。</li> |
95 |
<li><a href="http://www.gzip.org/zlib/">zlib</a> : 可逆データ圧縮。バージョン1.2.1以降。</li> |
96 |
<li><a href="http://qdbm.sourceforge.net">QDBM</a> : 組み込み用データベース。バージョン1.8.27以降。</li> |
97 |
</ul> |
98 |
|
99 |
<p>なお、QDBMをインストールする際には、zlibを有効化(./configure --enable-zlib)しておくことをお薦めします。その方がHyper Estraierの作るインデックスが小さくなります。QDBMの1.8.29以前のバージョンはサポートされませんので注意してください。</p> |
100 |
|
101 |
<h3>ビルドとインストール</h3> |
102 |
|
103 |
<p>Hyper Estraierの配布用アーカイブファイルを展開したら、生成されたディレクトリに入ってインストール作業を行います。</p> |
104 |
|
105 |
<p>configureスクリプトを実行して、ビルド環境を設定します。</p> |
106 |
|
107 |
<pre>./configure |
108 |
</pre> |
109 |
|
110 |
<p>プログラムをビルドします。</p> |
111 |
|
112 |
<pre>make |
113 |
</pre> |
114 |
|
115 |
<p>プログラムの自己診断テストを行います。</p> |
116 |
|
117 |
<pre>make check |
118 |
</pre> |
119 |
|
120 |
<p>プログラムをインストールします。作業は `root' ユーザで行います。</p> |
121 |
|
122 |
<pre>make install |
123 |
</pre> |
124 |
|
125 |
<h3>結果</h3> |
126 |
|
127 |
<p>一連の作業が終ると、以下のファイルがインストールされます。</p> |
128 |
|
129 |
<pre>/usr/local/include/estraier.h |
130 |
/usr/local/include/estmtdb.h |
131 |
/usr/local/lib/libestraier.a |
132 |
/usr/local/lib/libestraier.so.2.0.0 |
133 |
/usr/local/lib/libestraier.so.2 |
134 |
/usr/local/lib/libestraier.so |
135 |
/usr/local/lib/pkgconfig/hyperestraier.pc |
136 |
/usr/local/bin/estcmd |
137 |
/usr/local/bin/estmttest |
138 |
/usr/local/bin/estmaster |
139 |
/usr/local/bin/estcall |
140 |
/usr/local/bin/estload |
141 |
/usr/local/bin/estconfig |
142 |
/usr/local/bin/estwolefind |
143 |
/usr/local/libexec/estseek.cgi |
144 |
/usr/local/share/hyperestraier/estseek.conf |
145 |
/usr/local/share/hyperestraier/estseek.tmpl |
146 |
/usr/local/share/hyperestraier/estseek.top |
147 |
/usr/local/share/hyperestraier/estresult.dtd |
148 |
/usr/local/share/hyperestraier/estraier.idl |
149 |
/usr/local/share/hyperestraier/locale/... |
150 |
/usr/local/share/hyperestraier/filter/... |
151 |
/usr/local/share/hyperestraier/increm/... |
152 |
/usr/local/share/hyperestraier/doc/... |
153 |
</pre> |
154 |
|
155 |
<h3>Mac OS XとHP-UXとWindows</h3> |
156 |
|
157 |
<p>Mac OS Xの場合、「make」の代わりに「make mac」、「make check」の代わりに「make check-mac」、「make install」の代わりに「make install-mac」を実行してください。なお、Mac OS Xでは共有ライブラリの命名規則が異なります。「libestraier.1.0.0.dylib」「libestraier.1.dylib」「libestraier.dylib」になります。</p> |
158 |
|
159 |
<p>HP-UXの場合、「make」の代わりに「make hpux」、「make check」の代わりに「make check-hpux」、「make install」の代わりに「make install-hpux」を実行してください。なお、HP-UXでは共有ライブラリの命名規則が異なります。「libestraier.sl」になります。</p> |
160 |
|
161 |
<p>Windows上でビルドを行う場合には、CygwinおよびMinGWの開発環境が必要です。また、zlibとlibiconvとQDBMのMinGW版がそれぞれインストールされている必要があります。その上で、「make win」を実行してください。Windows用のインストールコマンドは用意されていません。Windows版のアプリケーションを動作させるには、「estraier.dll」だけでなく、「mgwz.dll」「libiconv-2.dll」「qdbm.dll」「pthreadGC2.dll」も必要です。なお、Windows版のバイナリパッケージには必要なライブラリが全て納められていますので、そちらを使うことをお薦めします。</p> |
162 |
|
163 |
<hr /> |
164 |
|
165 |
<h2 id="deployment">検索機能の配備</h2> |
166 |
|
167 |
<p>Webサイトの検索機能を例にとって、検索機能を動作させるための手順を説明します。意外に簡単にできますので、ぜひ実際に設置してみてください。</p> |
168 |
|
169 |
<h3>インデックス管理用のコマンド</h3> |
170 |
|
171 |
<p>Hyper Estraierでは、高速な検索を可能にするために、転置インデックスと呼ばれるデータベースを利用します。つまり、検索を行う前に、検索対象の文書を登録した転置インデックスを構築しておく必要があります。以後は転置インデックスのことを単にインデックスと言います。</p> |
172 |
|
173 |
<p>インデックスを管理するために、estcmdというコマンドが提供されます。estcmdはローカルホストのファイルシステム上にある個々のファイルを文書として扱います。インデックスに文書を登録したり、インデックス内の文書情報を削除することができます。また、特定のディレクトリの以下の文書を一括して登録することもできます。対応している文書の形式は、プレーンテキストと、HTMLと電子メール(MIME)です。</p> |
174 |
|
175 |
<p>その他の形式の文書を扱ったり、リモートホストにあるファイルを扱ったりすることもできるのですが、その方法については後々説明します。</p> |
176 |
|
177 |
<h3>インデックスの作成</h3> |
178 |
|
179 |
<p>あなたがWebサイトを運営していて、そのコンテンツが「/home/www/public_html」以下に置いてあるとしましょう。その下にある全てのHTMLファイルを登録したインデックスを「/home/www/casket」として作成することにします。それには、以下のコマンドを実行します。</p> |
180 |
|
181 |
<pre>cd /home/www |
182 |
estcmd gather -il ja -sd casket /home/www/public_html |
183 |
</pre> |
184 |
|
185 |
<p>「/home/www/public_html」以下の文書を収集して、casketという名前のインデックスを作るという意味です。「-il ja」オプションは、文字コードの判定時に日本語を優先するという意味です。「-sd」オプションは、ファイルの作成日時と更新日時をインデックスに記録するという意味です。実行すると、進捗状態のログメッセージが出てから、casketというディレクトリが作成されます。このディレクトリがインデックスです。インデックスの作成に必要な手順はこれだけです。</p> |
186 |
|
187 |
<h3>検索用CGIスクリプト</h3> |
188 |
|
189 |
<p>検索はWebインターフェイスで行います。Webブラウザで検索用ページにアクセスすることで、検索を行います。estseek.cgiはそのためのCGIスクリプトです。CGIスクリプトを動作させるためのWebサーバの設定については、各サーバのマニュアルをご覧ください。</p> |
190 |
|
191 |
<h3>検索用ページの設置</h3> |
192 |
|
193 |
<p>CGIスクリプトの設置場所のURLが「http://www.estraier.ad.jp/cgi-bin/」で、そのローカルのパスが「/home/www/cgi-bin」だとしましょう。その場合、以下のコマンドを実行します。</p> |
194 |
|
195 |
<pre>cd /home/www/cgi-bin/ |
196 |
cp /usr/local/libexec/estseek.cgi . |
197 |
cp /usr/local/share/hyperestraier/estseek.* . |
198 |
</pre> |
199 |
|
200 |
<p>「/usr/local/libexec/estseek.cgi」と、「/usr/local/share/hyperestraier/」にあるestseek.confとestseek.tmplとestseek.topを、「/home/www/cgi-bin/」にコピーするという意味です。estseek.cgiはCGIスクリプトです。estseek.confは設定ファイルです。estseek.tmplは検索ページのテンプレートファイルです。estseek.topは検索ページの初期画面のメッセージを記述したファイルです。なお、それらを日本語化したものが「/usr/local/share/hyperestraier/locale/ja/」の下にありますので、そちらを利用してもよいでしょう。</p> |
201 |
|
202 |
<p>適当なテキストエディタで、設置されたestseek.confを開いて編集します。多くの項目はそのままでよいのですが、indexnameとlprefixとgprefixは変更する必要があります。以下のように書きます。</p> |
203 |
|
204 |
<pre>indexname: /home/www/casket |
205 |
... |
206 |
lprefix: file:///home/www/public_html/ |
207 |
gprefix: http://www.estraier.ad.jp/ |
208 |
... |
209 |
</pre> |
210 |
|
211 |
<p>indexnameはインデックスのパスを指定します。lprefixは対象文書のローカルのパスの接頭辞を指定します。gprefixは対象文書のURLの接頭辞を指定します。</p> |
212 |
|
213 |
<h3>使ってみよう</h3> |
214 |
|
215 |
<p>これで準備はOKです。Webブラウザで、「http://www.estraier.ad.jp/cgi-bin/estseek.cgi」にアクセスしてみてください。詳しい使い方はそのページに書いてあります。</p> |
216 |
|
217 |
<h3>インデックスの更新</h3> |
218 |
|
219 |
<p>サイト内の文書が更新されたり、新しい文書が追加されたりした場合、適当な頻度でインデックスも更新するとよいでしょう。古いインデックスを削除して新しく作りなおしてもよいのですが、Hyper Estraierではインデックスの差分登録をすることもできます。</p> |
220 |
|
221 |
<p>インデックスを作る際に「-sd」オプションをつけてファイルの更新時刻を記録していたのは、差分登録のためです。更新時刻を記録したインデックスに対しては、「-cl」と「-sd」と「-cm」オプションをつけて更新を行うことで、差分登録を行うことができます。</p> |
222 |
|
223 |
<pre>cd /home/www |
224 |
estcmd gather -cl -il ja -sd -cm casket /home/www/public_html |
225 |
</pre> |
226 |
|
227 |
<p>「-cm」オプションをつけると、まだインデックス内に存在しないか、前に登録した時より更新時刻が新しい文書のみを登録します。なお、既存の文書とURLが同じ文書を登録すると上書きされますので、古い文書は検索にヒットしなくなります。「-cl」オプションをつけると、上書きされた文書が含んでいた語句のインデックスを再構築します。次に更新をする時のために「-sd」オプションもつけて更新日時を記録しています。</p> |
228 |
|
229 |
<h3>削除文書の反映</h3> |
230 |
|
231 |
<p>サイト内の文書が削除された場合も、それをインデックスに反映して検索にヒットしないようにします。以下のコマンドを実行します。</p> |
232 |
|
233 |
<pre>cd /home/www |
234 |
estcmd purge -cl casket |
235 |
</pre> |
236 |
|
237 |
<p>インデックス内の文書情報をスキャンして、元の場所にファイルがないものを削除します。「-cl」オプションは、削除された文書が含んでいた語句のインデックスを再構築することを指示します。</p> |
238 |
|
239 |
<h3>インデックスの最適化</h3> |
240 |
|
241 |
<p>文書の登録や削除を繰り返すと、少しずつインデックスのサイズが肥大化してきます。データベースを最適化するとそれを解消してサイズを縮小することができます。</p> |
242 |
|
243 |
<pre>cd /home/www |
244 |
estcmd optimize casket |
245 |
</pre> |
246 |
|
247 |
<p>なお、gatherやpurgeを実行する際に「-cl」をつけなかった場合、上書きまたは削除された文書の情報は、削除マークが付けられるだけでインデックス内に残っています。最適化はインデックスを再構築して削除文書の領域を完全に消去する効果もあります。</p> |
248 |
|
249 |
<h3>更新作業の自動化</h3> |
250 |
|
251 |
<p>コマンドを定期的に実行するcronなどの機能を使ってインデックスの更新作業を自動化すると楽です。その際には、以下のようなスクリプトを書いておくとよいでしょう。</p> |
252 |
|
253 |
<pre>/usr/local/bin/estcmd gather -cl -il ja -sd -cm /home/www/casket |
254 |
/usr/local/bin/estcmd purge -cl /home/www/casket |
255 |
</pre> |
256 |
|
257 |
<p>ただし、purgeは毎回の更新で必要なわけではありません。それらは比較的重い処理なので、たまにやるだけで充分です。個人のWebサイトの検索システムであれば、gatherは毎日、purgeは毎週といった頻度にしてもよいでしょう。また、月に一度くらいでoptimizeを行ってもいいでしょう。</p> |
258 |
|
259 |
<h3>詳しい使い方</h3> |
260 |
|
261 |
<p>コマンドやCGIスクリプトの詳しい使い方に関しては<a href="uguide-ja.html">ユーザガイド</a>をご覧ください。APIの詳しい使い方に関しては<a href="pguide-ja.html">プログラミングガイド</a>をご覧ください。P2P機構の詳しい使い方に関しては<a href="nguide-ja.html">P2Pガイド</a>をご覧ください。</p> |
262 |
|
263 |
<hr /> |
264 |
|
265 |
<h2 id="complement">補足</h2> |
266 |
|
267 |
<p>作者の連絡先などの補足事項を紹介します。</p> |
268 |
|
269 |
<h3>連絡先</h3> |
270 |
|
271 |
<p>Hyper Estraierは平林幹雄が作成しました。作者と連絡をとるには、`mikio@users.sourceforge.net' 宛に電子メールを送ってください。ただし、質問やバグレポートなど、他のユーザと共有できる話題はメーリングリストに送ってください。メーリングリスト(日本語)の参加方法については、`<a href="http://lists.sourceforge.net/lists/listinfo/hyperestraier-users-ja">http://lists.sourceforge.net/lists/listinfo/hyperestraier-users-ja</a>' を参照してください。</p> |
272 |
|
273 |
<h3>ライセンス</h3> |
274 |
|
275 |
<p>Hyper Estraierはフリーソフトウェアです。あなたは、Free Software Foundationが公表したGNU Lesser General Public Licenseのバージョン2.1あるいはそれ以降の各バージョンの中からいずれかを選択し、そのバージョンが定める条項に従ってHyper Estraierを再頒布または変更することができます。</p> |
276 |
|
277 |
<p>Hyper Estraierは有用であると思われますが、頒布にあたっては、市場性及び特定目的適合性についての暗黙の保証を含めて、いかなる保証も行ないません。詳細についてはGNU Lesser General Public Licenseを読んでください。</p> |
278 |
|
279 |
<p>あなたは、Hyper Estraierと一緒にGNU Lesser General Public Licenseの写しを受け取っているはずです(`COPYING' ファイルを参照してください)。そうでない場合は、Free Software Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA へ連絡してください。</p> |
280 |
|
281 |
<h3>謝辞</h3> |
282 |
|
283 |
<p>Hyper Estraierは情報処理推進機構(IPA)による2004年度第2回未踏ソフトウェア創造事業の支援を受けて開発されました。同機構および関係各位に感謝いたします。また、有用な助言をくれた皆様、そして、Hyper Estraierのユーザの皆様にお礼を申し上げます。</p> |
284 |
|
285 |
<hr /> |
286 |
|
287 |
</body> |
288 |
|
289 |
</html> |
290 |
|
291 |
<!-- END OF FILE --> |