どうも、モリタです。
こんにちは。
意味をちゃんと調べることなく、生きていく中でなんとなく覚え、なんとなく使っている言葉は結構多いのではないでしょうか。
今日はそんなお話です。
先日、MySQLでテキストが保存されたカラムに対してLike検索することを「全文検索」と呼んでいたら、複数の人から「それは違う」と指摘されて、エンジニア生活10年間、ずっと間違えて使っていたことにショックを受けました。
私はいままで、全文検索の手段としてLike検索を使うのか、全文検索エンジンを使うのか、はたまた転置インデックスを自作するのか、と思っていたのですが、どうやらRDBMSでは転置インデックスを使った検索のことを「全文検索」と言うらしいのです。
(ここで納得してしまった人は最後まで読まないと危険です)
これまで、「全文検索」についてしっかり調べたわけでもなく、エンジニアになって会話の文脈からなんとなく意味を把握し、特に疑問を持たないまま使っていたので、「あー、そーだったのかー」とその時は納得しました。
だがしかし、「全文検索」という日本語からしてLike検索が全文検索ではない、というのがどうもしっくりこなくてモヤモヤが膨らんでいきました。
なのでちゃんと調べてみることにしました。こういうときはウィキペディアが頼りになります。
全文検索(ぜんぶんけんさく、英: Full text search)とは、コンピュータにおいて、複数の文書(ファイル)から特定の文字列を検索すること。「ファイル名検索」や「単一ファイル内の文字列検索」と異なり、「複数文書にまたがって、文書に含まれる全文を対象とした検索」という意味で使用される。
ん?ちょっとまてよ?
私の認識は間違ってないんじゃないか?
ウィキペディアをもう少し見てみます。
全文検索技術
grep型
・・・中略・・・
索引(インデックス)型
・・・中略・・・
Likeはgrep型だろうなあ。
・・・
確信しました。
私の認識は間違っていなかった!!
結局、Likeだろうがインデックス使おうが、全文に対して行う検索は全文検索なんですね!!
ちゃんと調べて良かったー。
調べていく中で、「全文検索=インデックス型の全文検索」として扱っている記事が沢山ありました。
言葉は、勘違いや間違いが元で変化していくものだと思うので、多くの人の認識を正とすれば良いと思いますし、日常生活におけるコミュニケーションでは、話が噛み合っていなくてもそれほど大問題になることはないでしょう。(男女関係は別として)
しかしそれがシステム構築となると話は別です。(ビジネスなら何でもそうだと思いますが)
認識の齟齬が重大なバグを生み出すことになるかもしれません。
プロジェクトの全員が同じ認識でいるかどうかを把握するのは難しいと思います。
ただ、少しでもおかしいと思ったら迷わず確認するのが大事だなーと改めて感じました。
そして伝える時は「全文検索」と言う漠然とした言い方ではなく、「likeを使った全文検索」などと具体的に言うように心がけようとも思いました。
若い時は人の意見はあまり聞き入れず、自分が正しいと思ったことは貫き通していましたが、年を重ねるごとに、なるべく人の意見を聞くように心がけていました。
それが災いした今回の事件でした。
これからは人の意見を聞かないようにしたいと思います!!!(嘘)