REST API APPENDIX (REST API)
最終更新日 2015-9-11

OR の内部で AND を指定できません

検索の条件式クエリで OR 内部に AND が指定できない

(掲載日: 2015年9月14日)

SDK ドキュメントにおける記述の誤りについてのお詫び

公式ドキュメントには、以前より、SDK のクエリー発行時に OR 内部で AND 連結する方法
について記述するドキュメントがありましたが、これが誤りであることが判明したため、
SDK ドキュメントの当該箇所については記述をコメントアウトいたしました (訂正日: 2015年9月11日)
SDK を利用したクエリー検索において意図した結果が取得できていなかった皆様に
ご迷惑をお掛けいたしましたことをお詫び申し上げます。

OR の内部に AND が指定できない

寄せられたお問い合わせ

以下を実現することは可能であるかと、お客様からよく質問が寄せられます。

A OR (B AND C) OR D

これを実現するために以下のように検索条件式を書いても、意図した結果が返ってこないというものです。
( 以下の記述は誤りですのでご注意下さい )

A;or{B;C};D;

結論から申しますと、現在のアピアリーズでは OR の内部で AND は指定できません
したがって残念ながら現時点では これを表現するための条件式も書けない ということです。

アピアリーズではこれを将来的な課題であると考え、改善を検討しています。

or{} の認識の相違

しかし一方で上のように寄せられるお問い合わせから、or{} について
お客様の認識と実際のアピアリーズの処理内容との相違が非常に顕著であるため、
ここでは、上にあげられたような条件式が、実際はどのように処理されるかを説明します。

問題をわかり易くするために、それぞれの “;” に色づけして説明します。

A;or{B;C};D;

現行のアピアリーズの仕様では

or{} の前にある「 ; 」 ・・・ OR
or{} の内部にある「 ; 」 ・・・ OR
D の前にある「 ; 」 ・・・ AND

のように処理されます。

したがってこれを論理式で表現すると、

(A AND D) OR (B) OR (C)

になります。

つまり or{;} の内部にある ;OR として処理するのが現状の仕様のため、
現時点では「OR の内部に AND を指定することができない」
ということです。

参考