タグ検索・参照関係の逆引き#Groongaはカラム値として他のテーブルへの参照の配列を持つことができます。実は、テーブルへの参照の配列データを用いることによって、いわゆるタグ検索を行うことが可能となります。タグ検索はGroongaの転置インデックスというデータ構造を用いて高速に行われます。タグ検索#動画共有サイトの検索エンジンを作ることを想定します。1つの動画には、その動画の特徴を表す、複数の語句が付与されています。「ある語句が付与されている動画の一覧を取得する」検索を行いたいとします。実際に、動画情報のテーブルを作成し、検索をしてみましょう。動画の情報を保存する、Videoテーブルを作成します。Videoテーブルでは、動画のタイトルをtitleカラムに、動画のタグ情報をtagsカラムにTagテーブル型で複数格納しています。タグの情報を保存する、Tagテーブルを作成します。Tagテーブルでは、タグ文字列を主キーに格納し、Videoテーブルのtagsカラムに対するインデックスをindex_tagsカラムに格納しています。[[0,1337566253.89858,0.000355720520019531],8]インデックスカラムを作成すると、全文検索が高速に行えるようになります。インデックスカラムは、対象のカラムに保存されたデータに更新があったとき、自動的に更新されます。「ある語句が付与されている動画の一覧を取得する」検索を行いましょう。]このように、「Variety」、「Sports」、「Animation」のようなタグで検索を行うことができました。参照関係の逆引き#Groongaはテーブル間の参照関係の逆引きを高速に行うためのインデックスを付与することができます。タグ検索は、その1例にすぎません。ソーシャルネットワーキングサイトにおける友人関係を逆引き検索することができます。以下の例では、ユーザー情報を格納するUserテーブルを作成し、ユーザー名を格納するusernameカラム、ユーザーの友人一覧を配列で格納するfriendsカラムとそのインデックスのindex_friendsカラムを追加しています。[[0,1337566253.89858,0.000355720520019531],6]指定したユーザーを友人リストに入れているユーザーの一覧を表示してみましょう。]さらに、ドリルダウンを使って、友人リストに入っている数の一覧を表示してみましょう。]このように、テーブルの参照関係を逆にたどる検索ができました。インデックス付きジオサーチ#Groongaでは位置情報のカラムに対して、インデックスを付与することが出来ます。大量の位置情報レコードを検索する場合に、検索速度が速くなります。]これらのインデックスは、位置情報レコードを用いてソートする場合に使われます。