基本検索ではマクロを使用した検索を行います。
検索文字列を指定します。
検索対象のフォルダを指定します。「(すべてのフォルダ)」を選択すると全てのフォルダから検索します。
チェックすると[フォルダ]で指定したフォルダの全てのサブフォルダも検索対象になります。
検索時に大文字と小文字を区別するかどうかを指定します。
検索文字列が正規表現かどうかを指定します。
すべてのヘッダを検索するかどうかを指定します。
本文を検索するかどうかを指定します。
検索文字列で指定された文字列をマクロとして処理し、そのマクロにマッチするメッセージを検索します。
通常、指定した条件がデフォルトの検索フォルダに設定され、その検索フォルダを開くことで検索結果を表示します。このチェックボックスにチェックを入れると、指定した条件で新たに検索フォルダを作成し、そのフォルダを開きます。検索フォルダについては、フォルダを参照してください。
基本検索では指定された条件からマクロを生成し、そのマクロにマッチするメッセージを検索します。生成されるマクロは以下のように決定されます。
まず、[マクロ]にチェックを入れた場合には、[検索文字列]がそのままマクロになります。それ以外の場合、検索の設定の[マクロ]で指定したマクロを使用します。デフォルトでは、「@Or(@F(%Subject, $Search, $Case), @F(%From, $Search, $Case), @F(%To, $Search, $Case), @F(@Label(), $Search, $Case))」です。
$Searchは[検索文字列]で指定された文字列を以下のように扱った値になります。まず、[正規表現]がチェックされていない場合には、マクロの文字列リテラルになります。チェックされた場合には、正規表現リテラルになり[大文字小文字を区別する]にチェックが入っていない場合には、iオプションが指定されます。たとえば入力された文字が「foo*」だった場合には、
のようになります。
$Caseは[大文字小文字を区別する]にチェックを入れた場合には真に、それ以外の場合には偽になります。また、$Regexは[正規表現]にチェックを入れた場合には真に、それ以外の場合には偽になります。
@Fは[正規表現]にチェックを入れた場合には@Defun('F', @RegexMatch($1, $2))、入れない場合には@Defun('F', @Contain($1, $2, $3)のように定義される関数です。
ここで指定されたマクロを@X()と考えると、検索時のマクロは以下のようになります。
@Progn(@Set('Search', <検索文字列>), @Set('Case', <大文字と小文字を区別する>), @Set('Regex', <正規表現>), @Defun('F', <検索関数>), @X())
さらに、[すべてのヘッダを検索する]や[本文を検索する]にチェックを入れた場合には、X()の代わりに以下のようなマクロが使われます。
[すべてのヘッダを検索する]にチェックを入れた場合
@Or(@X(), @F(@Decode(@Header()), $Search, $Case))
[本文を検索する]にチェックを入れた場合
@Or(@X(), @F(@Body(), $Search, $Case))
上記の両方の場合
@Or(@X(), @F(@Decode(@Header()), $Search, $Case), @F(@Body(), $Search, $Case))