日本語全文検索エンジン"Freya"
Full-text Retrieval Engine for Your Archives

■ 索引の作成 (索引づけ, インデクシング)

索引は findex(1)を使って作成します。しかし,findexが入力として受け付けるのはFDIFファイルのみです。各種の文書ファイルをこのFDIFファイルに統一してから,findexを起動することになります。FDIFファイルはXML文書のようなものです(*1)。

text2fdif
プレインテキストをFDIF形式に変換します。
html2fdif
HTMLをFDIF形式に変換します。
mail2fdif
RFC822に従ったメールをFDIF形式に変換します。

(*1) FDIFは一見するとXMLの適性形式に準拠しているように見えます。が,findexは任意のXML文書を受け付けるわけではありません。また,FDIF形式はXMLに適合していない部分もあります(Unicodeを採用していないなど)。さらに現在のfindex(1)の実装は実験的なものであり,タグはすべて行頭から始まる必要があるなど(^_^;,極めて制限の大きいものとなっています。そのため,今後,FDIF形式を別のフォーマットに変更する可能性があります。わざわざ,XML風にしているのは今後を考えてのことではあるのですが。

■ ファイル構成

Freyaを使うことで作成されるファイルは以下のようになります。一セットの索引につき,4つのファイルがfsearch(1), fsearch.cgi(1)によって使用されることになります。

拡張子 概要 検索時に必要? 作成するプログラム
hoge.fdif FDIF形式テキスト 不要 html2fdifなど
hoge.dsc 検索結果表示用要約ファイル html2fdifなど
hoge.lex 索引ファイル(見出し語) findex/fmerge
hoge.idx 索引ファイル(本体) findex/fmerge
hoge.map 出現位置座標変換用ファイル findex/fmerge
icot.dic 形態素辞書 不要 mkicotdic,fmkmorphdic

これらをすべてを合わせると(文書の内容によって変動しますが),元のテキストの70%くらいの容量を占めることになります。ある程度のオーバーヘッドがあるため,大量のファイルを処理するほど,格納効率はよくなります。

■ 索引のマージ

fmerge(1)で複数の索引ファイルをマージし,一つにまとめることができます。マージの対象となるのは,検索時と同様で,.dsc, .map, .lex, .idx の4つのファイルです。たとえば,base.{dsc,map,lex,idx}, news.{dsc,map,lex,idx},local.{dsc,map,lex,idx} という3セット(12ファイル)の索引があるときにこれらをまとめて all.{dsc,map,lex,idx} という索引を作るには,次のようにします。

	% fmerge all base news local

大量の文書(だいたい1万ファイル以上)を処理する場合は,数千ファイルずつfindexで索引づけし,最後にfmergeでマージするようにしたほうが確実でしょう。findexも内部的には小さな索引ファイルを作り,最後にマージを行なうように出来ています。HTMLから作った索引とメールから作った索引を混ぜることも不可能ではありません。しかし,検索結果を表示する際はいずれか一種類(またはgeneric表示)を選ばなくてはなりませんので,あまり意味がないでしょう。

■ コマンドラインからの検索

fsearch(1)を使うことでコマンドラインから検索できます。検索時にはhoge.dsc, hoge.map, hoge.idx, hoge.lex という4種類の索引ファイルが必要です。

	Usage: fsearch [-s mail|html] [-f n] [-t n] -i index key [key ..]

fsearchのオプションは以下の通りです。

-i index
索引ファイルの名前を指定します。.dsc, .map, .idx, .lexの前につく名前を使います。省略すると "default" が仮定されます。
-s style
検索結果の表示スタイルを選択します。現在のところスタイルには"generic", "mail", "html" の3種類が用意されています。デフォルトのgenericがもっとも一般的な出力ですが,mail2fdif を使ってメールを索引づけ場合は -s mail を,html2fdif を使ってHTMLを索引づけした場合は -s html を指定したほうがいいでしょう。適切なstyleを選ばないと時刻表示等がおかしくなります。
-f n
検索結果をn番目から表示します。n は 1 以上です。
-t n
検索結果をn番目まで表示します。n は 1 以上です。

■ CGIを使った検索

ご意見,ご感想,ご提案,苦情,バグ報告をおよせ下さい

原田昌紀 <harada@ingrid.org>