TL

全文検索

大量の文章から該当箇所を高速に探す仕組みです。転置インデックスの考え方、LIKE 検索との違い、専用エンジンを使う場面を解説します。

中級全文検索転置インデックス検索エンジン最終更新: 2026-06-06
TL;DR要点だけ先に
  • 1.全文検索は大量の文章から、検索語を含む文書を高速に見つける技術。事前に作る転置インデックスが要。
  • 2.転置インデックスは「単語 → その語を含む文書一覧」の辞書。毎回全文を読む LIKE と違い直行できる。
  • 3.RDB の機能でも可能だが、本格的な検索や関連度順・あいまい一致は Elasticsearch 等の専用エンジンが得意。

全文検索とは

商品の説明文、記事、メールの本文といった 長い文章の集まり から、「この言葉を含むものはどれか」を探したい場面は多くあります。全文検索(Full-Text Search) は、こうした文章群から検索語にマッチする文書を 高速に 見つけ出す技術です。

素朴にやるなら全文書を頭から読んで照合すればよいのですが、文書が数百万件あればとても間に合いません。全文検索が速いのは、検索のたびに本文を読むのではなく、あらかじめ作っておいた 索引 を引くからです。

転置インデックスの仕組み

全文検索の心臓部が 転置インデックス(inverted index) です。これは「文書 → 含まれる単語」ではなく、逆向きの 「単語 → その単語を含む文書の一覧」 という辞書です。

たとえば 3 つの文書があったとします。

文書本文
doc1データベース 入門
doc2検索 エンジン 入門
doc3データベース 設計

これを単語ごとにばらして整理すると、次のような転置インデックスができます。

単語含む文書
データベースdoc1, doc3
入門doc1, doc2
検索doc2
設計doc3

「データベース」で検索すれば、辞書を 1 回引くだけで doc1 と doc3 に 直行 できます。文書をすべて読み直す必要はありません。日本語のように単語が空白で区切られない言語では、文章を単語に分割する 形態素解析 や、機械的に N 文字ずつ区切る N-gram という前処理を挟んで、この辞書を作ります。

LIKE 検索との違い

RDB で部分一致を書くなら LIKE が思い浮かびます。

SELECT * FROM articles WHERE body LIKE '%データベース%';

これは動きますが、毎回テーブルの全行を頭から走査 して照合します。前後に % が付く中間一致は通常のインデックスも効かないため、行数が増えるほど線形に遅くなります。

観点LIKE 検索全文検索(転置インデックス)
事前準備不要索引の構築が必要
速度(大量データ)遅い(全件走査になりがち)速い(索引を引くだけ)
単語の認識文字列の並びとして扱う単語単位で扱える
関連度の並べ替えできないスコア順に並べられる
あいまい一致・表記ゆれ苦手同義語・ゆらぎ吸収が可能

LIKE は手軽で件数が少なければ十分ですが、文章をまともに検索するなら全文検索の仕組みが要ります。

LIKE は単語の境界を知らない

LIKE '%data%'databasemetadata にもヒットします。文字の並びとしてしか見ていないからです。全文検索は本文を単語に分けて索引化するため、「data という語」を狙って検索でき、無関係な部分一致を拾いにくくなります。「とりあえず LIKE」で精度に困ったら、全文検索への切り替えを検討する合図です。

専用エンジンを使う場面

PostgreSQL の tsvector / tsquery や MySQL の全文索引など、RDB にも全文検索機能はあります。データ量が中規模で、検索が機能の一部に過ぎないなら、まずはこれで十分なことも多いです。

一方で、検索そのものが中心的な機能になると、Elasticsearch / OpenSearch などの専用検索エンジンが選ばれます。

  • 関連度スコアリング: 一致の強さで結果を並べ替え、「より関連の高い順」に出せる。
  • あいまい検索・表記ゆれ: タイプミス許容(ファジー)や同義語辞書、活用形の正規化に強い。
  • ファセット・集計: カテゴリ別の件数集計など、検索結果の絞り込み UI を作りやすい。
  • スケール: 大量の文書を複数ノードに分散し、検索負荷を横に広げられる。
検索エンジンは“正”ではなく“写し”として使う

専用エンジンを導入する際は、データの正本(マスター)は RDB に置いたまま、その内容を検索エンジンへ同期して 検索専用の写し として使う構成が一般的です。こうすると検索が落ちても本体データは無事ですし、索引の作り直しも安全に行えます。RDB と検索エンジンは置き換えではなく、役割分担で組み合わせるのが定石です。

全文検索は「全文を毎回読む」発想から「索引を引く」発想への転換です。転置インデックスという辞書さえ押さえれば、LIKE との違いも専用エンジンを足す理由も、すっきり腑に落ちるはずです。

データベース Article

全文検索を実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

全文検索

比較で見る軸

難易度: intermediate / カテゴリ: データベース / タグ数: 3

導入後に効く点

転置インデックスは「単語 → その語を含む文書一覧」の辞書。毎回全文を読む LIKE と違い直行できる。

先に潰すリスク

用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。

数字・仕様の読み方
難易度
intermediate
カテゴリ
データベース
タグ数
3

判断チェックリスト

  • 自社の用途が「全文検索 / 転置インデックス」に近いか確認する。
  • 強みである「全文検索は大量の文章から、検索語を含む文書を高速に見つける技術。事前に作る転置インデックスが要。」が本当に評価軸になるか確認する。
  • 注意点の「用語だけ覚えても、設計・実装・運用でどこに効くかを確認しないと判断を誤る。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

全文検索転置インデックス検索エンジン全文検索転置インデックス検索エンジン
参考: 公式情報