機能関数
機能関数のパラメーターで参照するフィールドは、各関数の説明に基づき、インデックスまたは属性フィールドとして設定されている必要があります。
関数のパラメーターとして使用するドキュメントのフィールドは、その関数が要求する通り、インデックスまたは属性として設定されている必要があります。
in または notin:フィールド値が特定のリストに含まれるかどうかを判定
1. 構文
in(field, "number1|number2")notin(field, "number1|number2")
2. パラメーター
field:判定対象のフィールド名。INT、LITERAL、FLOAT、DOUBLE 型のフィールドのみサポートされます。ARRAY 型および TEXT 型のフィールド、あいまい検索用のアナライザはサポートされません。number N:セット内の要素。複数の要素は縦棒(|)で区切ります。各要素は文字列である必要があります。
3. 戻り値
true/false
4. 利用シーン
利用シーン 1:「iphone」を含み、かつ type フィールドの値が 1、2、または 3 のドキュメントを取得します。type フィールドは INT 型である必要があります。
query=default:'iphone'&&filter=in(type, '1|2|3')
利用シーン 2:「iphone」を含み、かつ type フィールドの値が 1、2、または 3 以外のドキュメントを取得します。type フィールドは INT32 型である必要があります。
query=default:'iphone'&&filter=notin(type, '1|2|3')
5. 注意事項
関数のパラメーターで参照するフィールドは、属性フィールドとして設定されている必要があります。
フィルター句で in または notin 関数を使用する場合、ARRAY 型のフィールドは使用できません。使用した場合、エラーコード 6141 のフィルター句構文エラーが返されます。
-
関数
in(field, "value1|value2")は(field = value1) OR (field = value2)と同等ですが、in関数の方がパフォーマンスが優れています。notin関数についても同様です。 -
inまたはnotin関数に大量の値(例:数千件)を渡すと、クエリのパフォーマンスが著しく低下する可能性があります。値リストが長くなるほどフィルタリング時の計算オーバーヘッドが増加し、クエリの遅延やタイムアウトを引き起こすことがあります。 -
大量の値を渡す必要がある場合は、リストをより小さなバッチ(例:1 バッチあたり 500 件以下)に分割して個別にクエリを実行し、その結果を統合してください。