Fooling コマンド一覧

Back



indexer.py (インデックスの作成・追加)

与えられた文書集合のためのインデックスを作成あるいは追加します。

注意: indexer.py は基本的な機能のみしかサポートしておらず、 文書集合 (Corpus) は FilesystemCorpus に限定されており、 扱う文書の種類も 1つだけであると仮定しています。複数の文書や文字コードを扱いたい場合や、 ディレクトリツリー以外のものを文書集合として使用したい場合は、 API を使って Python プログラムを書く必要があります。

構文:

$ indexer.py [オプション] インデックス用ディレクトリ [ファイル名1 ファイル名2 ...]

ファイル名を省略した場合、標準入力から与えられたファイル名の一覧 (1行に1ファイル名) を使用します。

オプション:

-F
-N
-R
デフォルトでは、indexer.py はインデックスの更新時刻 (= インデックスファイルのうち最後のものが更新された時刻) よりも新しいファイルのみをインデックスします。 -F (force) オプションを与えると、ファイルの更新時刻にかかわらず、指定された 文書すべてをインデックスに追加しますが、これはすでにインデックスされている文書を 2重にインデックスしてしまう可能性があります。-N (new) オプションはまだ インデックスされていない文書のみをインデックスします。 -R (reset) オプションは既存のインデックスを無視し、 すべての文書をゼロからインデックスします。
-b basedir
文書集合の基底ディレクトリを指定します。
-t doctype
文書の種類 (HTMLなど) を指定します。インデックスされるすべての文書は同じ種類をもつと仮定されています。 現在のところ、以下の種類をサポートしています:
-p prefix
インデックスファイルのプレフィックス (デフォルトは idx) を指定します。 これはアルファベット 3文字である必要があります。
-e encoding
文書ファイルの文字コード (デフォルトは locale.getdefaultlocale() の値) を指定します。
-D maxdocs
ひとつのインデックスファイルに含まれる最大の文書数 (デフォルトは 2000) を指定します。 これ以上の文書は次のインデックスファイルに持ち越されます。 0 を指定すると制限はなくなります。
-T maxterms
ひとつのインデックスファイルに含まれる最大の単語数 (デフォルトは 50000) を指定します。 単語数がこれ以上になると、たとえ文書数が少なくても次の文書は自動的に 次のインデックスファイルに持ち越されます。 0 を指定すると制限はなくなります。
-Y
読みがなによるインデックスを有効にします。 このオプションをつけた場合、インデックスにかかる時間およびインデックスが ディスク上に占めるサイズは、読みがなによるインデックスを しない場合のほぼ 2倍になります。

selection.py (検索)

与えられた文書集合から文字列を検索・表示します。

注意: selection.py は基本的な機能のみしかサポートしておらず、 文書集合 (Corpus) は FilesystemCorpus に限定されており、 扱う文書の種類も 1つだけであると仮定しています。これ以外の文書集合を扱いたい場合は、 API を使って Python プログラムを書く必要があります。

構文:

$ selection.py [-c 中間結果ファイル] [オプション] インデックス用ディレクトリ [キーワード1 キーワード2 ...]
または
$ selection.py -c 中間結果ファイル

1番目の形式で 中間結果ファイル を指定すると、 途中結果を指定されたファイルに pickle 保存し、 2番目の形式で途中から表示を再開させることができます。 (これは「次の 10件」などの表示に使います)

オプション:

-b basedir
文書集合の基底ディレクトリを指定します。
-t doctype
文書の種類 (HTMLなど) を指定します。
-p prefix
検索対象となるインデックスファイルのプレフィックスを指定します。 デフォルトは空文字列であり、これは "xxxNNNNN.cdb" という形式のファイル名をもつすべてのインデックスファイルを対象とします。
-e encoding
文書ファイルの文字コード (デフォルトは locale.getdefaultlocale() の値) を指定します。
-s
検索のさいに Predicate のかわりに StrictPredicate を使用します。
-n results
結果表示する最大件数 (デフォルトは 10) を指定します。 この値を 0 にするとすべての結果を表示します。
-S
安全でないモード。デフォルトでは、Fooling はすでに インデックスされた文書がその後更新された場合、 その文書を検索結果に含めませんが、 このオプションを指定するとそれらも表示するようになります。
-D
Disjunctive (OR 検索) モード。与えられた検索条件を AND ではなく、 すべて OR として組み合わせます。

注意: インデックス後に元の文書を更新すると 文書内の単語の位置がズレてしまうため、正しく文字列を発見できない (あるいは snippet が文字化けする) 可能性があります。

-T timeout
検索のタイムアウトを秒数で指定します。 -T オプションを与えると検索にかかった時間が (まじめに) 表示されます。
-Y
読みがなによる検索を有効にします。 このオプションは、読みがなのインデックスが作成されている文書集合を 対象としたときのみ (つまり、indexer.py に -Y オプションを つけてインデックスした場合のみ) 有効です。 このオプションをつけた場合、検索文字列はローマ字あるいはひらがなで 与えることができます。

merger.py (インデックスの統合)

複数のインデックスファイルを統合します。

与えられたインデックス用ディレクトリの .cdb ファイルを 順に検査していき、まとめられるファイルをすべてまとめた新しいインデックスファイルを作ります。 古いインデックスファイルは拡張子 .bak をつけて残されます。 (これらは rm してかまいません。)

なお、インデックスファイルの統合中にも検索はできますが、 インデックスファイルの統合と追加を同時に行わないでください

構文:

$ merger.py [オプション] インデックス用ディレクトリ

オプション:

-p prefix
統合するインデックスファイルのプレフィックス (デフォルトは idx) を指定します。 これはアルファベット 3文字である必要があります。
-D maxdocs
ひとつのインデックスファイルに含まれる最大の文書数 (デフォルトは 2000) を指定します。 これ以上の文書は次のインデックスファイルに持ち越されます。 0 を指定すると制限はなくなります。
-T maxterms
ひとつのインデックスファイルに含まれる最大の単語数 (デフォルトは 50000) を指定します。 単語数がこれ以上になると、たとえ文書数が少なくても次の文書は自動的に 次のインデックスファイルに持ち越されます。 0 を指定すると制限はなくなります。

tools/sortbymtime.py (ファイル名を日付順にソート)

与えられたファイル名一覧を古い順に (= 新しいファイルが最後にくるように) 並べ換えて表示します。 これは find などの結果を日付順で indexer.py に渡すときに使います。

構文:

$ sortbymtime.py [ファイル名1 ファイル名2 ...]

ファイル名を省略した場合、標準入力から与えられたファイル名の一覧 (1行に1ファイル名) を使用します。


tools/search.cgi (検索用 CGI サンプル)

これは Fooling を使った検索用 CGI のサンプルです。 SearchApp クラスを適当に変更してお使いください。

とくに変更する必要がある部分はクラス変数 TITLECORPUS です。 TITLE には検索ページのタイトルを指定します。 CORPUS は文書集合のマッピングで、 記号 (URL中のパラメータ c の値) と 文書集合の名前、文書ディレクトリ、文書の種類 (Pythonクラス)、 およびリンク用の基底URLを指定します。

TITLE = 'タイトル文字列'

CORPUS = {
  '記号': (u'名前', '文書ディレクトリ', 種類, 'リンク用の基底URL'),
  ...
  }

なお、文書ディレクトリ中には、元の文書本体が doc/ というサブディレクトリに、 そのインデックスファイルが idx/ というサブディレクトリに それぞれ格納されていると仮定しています。たとえば文書ディレクトリが /www/python なら、

以下のパラメータは CGI による負荷を制限するために調整してください。

MAX_QUERY_CHARS = フォームに入力できる最大文字数
MAX_QUERY_PREDS = 検索条件の最大数
TIMEOUT = 検索のタイムアウト秒数

tools/dumpidx.py (インデックスファイルの表示)

指定されたインデックスファイル (.cdb ファイル) を可読形式で表示します。 これはデバッグ用です。

構文:

$ dumpidx.py [ファイル名1 ファイル名2 ...]


Yusuke Shinyama