Skip to content
This repository has been archived by the owner on May 18, 2021. It is now read-only.

KQ_Expressions

Karno edited this page May 24, 2014 · 5 revisions

フィルタクエリについて

フィルタクエリは、ツイートを選別するためのクエリです。
省略することもできますが、その場合は () を指定したのと同一になります。

記法

フィルタクエリは、式を組み合わせ、最終的に得られる結果が Boolean になるように記述します。
式は、項と演算子の組み合わせです。項は、たとえばtextであったり"文字列"であったり、1234567890であったりします。
演算子は、+, contains, == などです。

たとえば、 where text contains "Krile"contains が 両側の String を比較し、Boolean を返すため正しいクエリです。
しかし、 where rts + 5+ が 両側の Numeric を足して Numeric を返すため、正しいクエリではありません。

フィルタクエリには、以下の型が存在します。

  • Boolean - True, False の2つの値を持つ型です。フラグ型の項(is_verifiedなど)がこの型の値を返すほか、演算子による演算結果の多くもこの型となります。
  • Numeric - 数値です。idなど数値を持つ項が返すほか、12345678など数値を書いた場合や、@screen_name記法を用いた場合などもこの型に変換されます。
  • String - 文字列です。textなど文字列を持つ項や、"文字列"などを記述するとこの型となります。
  • Set - 数値の集合です。ourなど複数のユーザーIDが利用可能な項がこの型となります。

型の多相性

項によっては、複数の型に変換可能なものが存在します。

たとえば、favsrtsなどはNumericとして演算するときは被リツイート数、Setとして演算するときはリツイートしたユーザIDの 集合となります。
これらの型の選択は、演算子がどの型をサポートしているかに依存します。
たとえば、rts において、 rts contains us の場合、演算子containsの左辺はSetであることが要求されるためSetとして演算されますが、
rts > 5 の場合は>の両辺がNumericである必要が有るためNumericとして演算されます。

また、演算子も複数の型をサポートするものがあります。
たとえば contains は、左辺がSetであるとき右辺にはSetかNumericが指定可能です。
しかし、左辺がStringであるときは右辺にはStringだけが指定可能です。

このあたりは、 Expressions - Operators の各演算子の例をご覧いただくと一番手っ取り早く理解できるかと思います。

関連項目