ホーム > データベーススペシャリスト試験 > 2024年
データベーススペシャリスト試験 2024年 午前2 問04
転置インデックスに関する記述として, 適切なものはどれか。
ア:SQL関数を評価した結果の値をインデックスとして使用する。
イ:最上位のノードから, 実データへのポインタを格納したリーフノードへと至るポインタをインデックスとして使用する。
ウ:テキストに含まれる単語に対して, その単語を含むテキストへのポインタをインデックスとして使用する。(正解)
エ:ヒープ領域を使用せずに実データを物理的に並べ替えたデータをインデックスとして使用する。
解説
転置インデックスに関する解説
転置インデックスとは
転置インデックス(Inverted Index)とは、主にテキスト検索に用いられるデータ構造の一つで、文書集合中の単語と、それぞれの単語が現れる文書(あるいは文書内の位置)との対応関係を保持します。
例えば、大量の文書がある場合に、「特定の単語がどの文書に含まれているか」を素早く調べるために利用されます。
選択肢の解説
-
ア: SQL関数を評価した結果の値をインデックスとして使用する。
→ これは関数ベースインデックスなどの説明に近いです。転置インデックス特有の方法ではありません。 -
イ: 最上位のノードから、実データへのポインタを格納したリーフノードへと至るポインタをインデックスとして使用する。
→ これはBツリーインデックスの特徴です。Bツリーは階層的にノードを持ち、実データへのポインタをリーフノードに持ちますが、転置インデックスとは異なります。 -
ウ: テキストに含まれる単語に対して、その単語を含むテキストへのポインタをインデックスとして使用する。
→ これが転置インデックスの特徴です。単語をキーとし、それが現れる文書や位置へのポインタを保持しています。 -
エ: ヒープ領域を使用せずに実データを物理的に並べ替えたデータをインデックスとして使用する。
→ これはクラスター化インデックス(クラスタードインデックス)などの説明に当てはまります。転置インデックスとは異なります。
転置インデックスの仕組み
転置インデックスは、以下のように設計されます。
-
単語(キー)リスト
文書集合内のすべての単語を一意に抽出し、単語リストを作る。 -
ポスティングリスト(文書リスト)
各単語に対して、その単語が含まれる文書IDのリスト(または出現位置のリスト)を保持する。
これにより、検索時に「ある単語を含む文書はどれか?」という照会を高速に処理できるのです。
数式表現
文書集合 ( D = {d_1, d_2, \dots, d_N} )、語彙集合(単語)を ( V = {t_1, t_2, \dots, t_M} ) とすると、転置インデックスは
ここで、
(\mathrm{postings}(t_i) = { d_j \in D \mid t_i \in d_j })
つまり、単語 (t_i) を含む文書 (d_j) の集合となります。
(\mathrm{postings}(t_i) = { d_j \in D \mid t_i \in d_j })
つまり、単語 (t_i) を含む文書 (d_j) の集合となります。
まとめ
- 転置インデックスは、単語をキーに、その単語を含む文書へのポインタ(参照)を格納したデータ構造。
- テキスト検索(全文検索エンジンなど)で広く利用されている。
- 選択肢ウの説明が適切なもの。
これにより、選択肢「ウ」が正解である理由がお分かりいただけたと思います。