はじめに
この文章は、Groongaドキュメント読書会7で学んだ事のメモです。
元のテキストで分からなかった事を中心に書きました。
4.7.3. カラムインデックスによる関連テーブルをまたぐ検索
本文中のクエリselect Articles --match_columns comment.content --query groonga --output_columns "_id, _score, *"
の意味。
-
select Articles
は、Articlesテーブルを検索結果とする。 -
--match-columns comment.content
は、Articles.comment(つまりCommentsテーブル)のcontentカラムをマッチ対象(検索する)カラムとする。- この時、CommentテーブルにArticleテーブルへの転置インデックスがある事を確認している。Commentを検索→紐づくArticlesを検索結果とするため。
- このため、転置インデックス(Comments.article)がないと、Commentを検索した後にArticlesを辿れなくなる。これがドキュメントでいう「Commentsテーブルの'article'カラムインデックスを生成するクエリをコメントアウトすると、意図した検索結果が得られません。」。
-
--query groonga
は、 groongaという文字列を検索する。 -
--output_columns
は出力するArticlesテーブルのカラムを指定する。
気づいた事
- データの状態と検索の動きを理解するためには、図で書かないと分からない。
- RDBMSだと、そういう時はテーブル定義の絵を書くが、Groongaの場合、実際のデータがどう入っているかを書いた方がイメージしやすい気がした。
- 参照カラムとインデックスカラムがごっちゃになりやすい。要整理。
用語
- ポスティングリスト
- 転置インデックスのkeyに対応する、レコードのリスト。