去る 4 月 27 日に弊社 CrowdWorks でGroonga 新リリース自慢会 6.0.2が開催されました
そこに飛び入り参加させていただいた際に、全文検索についていろいろとご教授いただきました!
そこでお礼の念を込めて、忘れないうちにまとめてみました!
全文検索初心者がまとめた記事なので間違い等があるかもしれません。
その際は 優しく ご指摘頂けると幸いです
用語
テーブル
Groonga では RDBMS のテーブルと同じようなもの
カラム
Groonga では RDBMS のカラムと同じようなもの
インデックス
Groonga では転置インデックスのこと
転置インデックス
wikipediaによると
転置インデックス(てんちインデックス、Inverted index)とは、全文検索を行う対象となる文書群から単語の位置情報を格納するための索引構造をいう。
とのこと。早く検索結果にたどり着くためのもの(だろう)。
トークナイザー
テキストをトークナイズするモジュールのこと。
トークナイズとは?
検索対象となる文章や、検索キーワードをある任意の塊(トークン)に分解・抽出すること。
(辞書に登録された)単語ごとに分解する方法や、任意の連続文字数毎に区切る方法がある。
分解する方法は以下の様な方法があります。
■ 単語毎に分ける方法
■ 数文字毎に分ける方法(以下の場合2文字毎)
○ バイグラム・トリグラム・n-gram ?
トークナイズする際に、特定の文字数毎に区切る方法のこと
バイグラム(bigram) → 2 文字ごとに区切る
トリグラム(trigram) → 鶏肉の重さ...ではなく、3 文字毎に区切る
n-gram → 任意の n 文字で区切る
★ 更なる深みへ...
Groonga ドキュメント 7.8 トークナイザー
Groonga ドキュメント 7.8.2 「トークナイズ」とはなにか
ノーマライザー
クラウドワークス
とクラウドワークス
のような表記ゆれが発生する単語の場合、そのまま保存すると別のものとして扱われてしまいます。
それを防ぐための処理がノーマライズ!
以下のように、特定の表記に変更します。
# 例
クラウドワークス → クラウドワークス
クラウドワークス → クラウドワークス
クラウドワークス → クラウドワークス
★ 更なる深みへ...
トークナイズしたインデックスを使ってどうやって検索するのか説明を書こうと思ったのですが、ちょっと壮大な記事になりそうだったのと、ちゃんと説明できる自身がなかったので今回は自粛しました...
もちょっと勉強して改めて記事にします 💪