キーワード検索における論理式のフォーマットついて

検索クエリのフォーマットは以下の通りです。 このフォーマットを満たさない検索クエリは、 「不正な検索条件」として検索を実行できないものとします。

・検索クエリに使用する予約文字として、以下の文字を割り当てる。

論理積 &
論理和 |
カッコ ( )
否定 !

・優先順位は、「( )」→「!」→「&」→「|」とする。

・予約文字は半角文字とする。全角文字の場合は、検索文字列の一部とみなす。 つまり、「A&B」は、「A」と「B」を含むデータを検索するが、 「A&B」は、「A&B」を含む文字列を検索する。

・予約文字を含む文字列を検索する場合は、半角のダブルクォート「”」で囲む。

・半角ダブルクォートで囲まれた文字列の前後に検索文字列がつながっている場合は、 それらの文字列も連結して、1つの検索文字列として検索を実行する。 従って、以下の文字列は、すべて「A&B(株)」を含むデータを検索する。

「"A&B(株)"」 「A"&"B"(株)"」 「"A&B""(株)"」 「A"&"B"("株")"」

・半角スペース、全角スペース、タブ、改行は、文字列の区切りとして判断し、 分割された2つの文字列は、AND条件で検索する。 つまり、入力が「あああ いいい」であれば、「あああ & いいい」とみなして検索を実行する。 また、「あああ & いいい」は、「あああ」「&」「いいい」のAND検索を行う。 「あああ & いいい」は、「あああ」「いいい」のAND検索になる。

・半角スペース、全角スペース、タブ、改行を含む文字列を検索する場合は、 半角ダブルクォート「"」で囲む。 つまり、「Red Hat」を検索したければ、「"Red Hat"」と入力する。

・予約文字、半角スペース等を含む文字列を検索する場合に使用するダブルクォートは、 半角のダブルクォート「"」とする。 全角のダブルクォートは検索文字列の一部とみなす。

・半角のダブルクォートは検索できない文字とする。(全角のダブルクォートは検索可能。)

※QSのインデックスは、すべての文字を全角文字に統一し ているため、 全角のダブルクォートで検索すれば、すべての文字が検索可能となる。

・カッコの数は特に制限を設けず、任意の数の多重カッコをサポートする。

・否定「!」は、その直後に続く条件を満たさないデータを検索する。 例えば、「!aaa & bbb」は「aaaを含まず、bbbを含むデータ」を検索し、 「!(aaa & bbb)」は「aaaとbbbを両方含むデータ以外」、 つまり「aaaもしくはbbbをいずれか一方を含まないデータ」を検索する。