「全文検索」という語の紛らわしさ

知っている人は何の気なしに「全文検索」という言葉を使うが、この「全文検索」という言葉は前後の文脈によってかなり意味が異なってくるので要注意だ。うっかりしているとお互いに違う意味の「全文検索」を考えていたりする。

Wikipedia(本日現在)の記述によると、全文検索とは
コンピュータにおいて、複数の文書(ファイル)から特定の文字列を検索すること。「ファイル名検索」や「ファイル内文字列検索」と異なり、「複数文書にまたがって、文書に含まれる全文を検索する」という意味で使用される。

なのだそうだ。
ということは、「ファイル名検索」や「ファイル内文字列検索」といったものを知らない(知っていてもほとんど意識しない)一般の人にとっては「全文検索」とは単なるファイル検索のことであり、「全文」とつけるのは単にもったいぶった言い方でしかないことになる。

もっと紛らわしいのが、RDBMSに搭載されている「全文検索」機能。
こちらは多少パソコンに詳しい人でも「LIKE '%文字列%’」との区別がついていないことがよくある。
RDBMSでいう「全文検索」は文章内の単語に対してインデックスを設定してあり、「高速に」検索できる機能のことだ。LIKE演算子で '%文字列%' とやるとインデックスが使えないので、検索が異様に遅くなる。これを防止するためにDB内に格納された文章をあらかじめ解析して、単語ごとに特殊なインデックスを作成しておき、後から検索しやすくしておく機能がRDBMSでいう「全文検索」だ。

性能的には、Wikipediaでいう「grep型全文検索」と「索引型全文検索」の差に近い。
しかし、grepは全文検索と呼ばれるのに対して、DBでのLIKE 演算子はあまりに紛らわしいので全文検索と呼ばれることはない。

話を始める前に「ここではRDBMSでいう全文検索の話をします」と言えば通じるかといえば...そもそもRDBMSの全文検索機能を知らない人は確実に何か違うものを想像してしまうからそれもダメだ。「全文検索」というのはよくある表現だから「自分はRDBMSでいう全文検索機能を知らない」ということに気づかない人がほとんどで(←数年前の私もそうだった)、それでも微妙に話がかみ合ったりするので、プロジェクトが佳境に入ってからでないと「ああ勘違い」に気づかなかったりする。
RDBMSの全文検索機能、どうしてこう紛らわしい用語になってしまったのだろうか。もっと別の言い方を考えたほうがよかったろうに。

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック