Edited at

Groonga新リリース自慢会 6.0.2 で教わったことまとめ

More than 3 years have passed since last update.

去る4月27日に弊社CrowdWorksでGroonga新リリース自慢会 6.0.2が開催されました :tada:

そこに飛び入り参加させていただいた際に、全文検索についていろいろとご教授いただきました!

そこでお礼の念を込めて、忘れないうちにまとめてみました!

全文検索初心者がまとめた記事なので間違い等があるかもしれません。

その際は 優しく ご指摘頂けると幸いです :bow:


用語


テーブル

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 「トークナイズ」とはなにか


ノーマライザー

クラウドワークスクラウドワークスのような表記ゆれが発生する単語の場合、そのまま保存すると別のものとして扱われてしまいます。

それを防ぐための処理がノーマライズ

以下のように、特定の表記に変更します。

# 例

クラウドワークス → クラウドワークス
クラウドワークス → クラウドワークス
クラウドワークス → クラウドワークス


★ 更なる深みへ...

Groonga ドキュメント 7.7 ノーマライザー


トークナイズしたインデックスを使ってどうやって検索するのか説明を書こうと思ったのですが、ちょっと壮大な記事になりそうだったのと、ちゃんと説明できる自身がなかったので今回は自粛しました...

もちょっと勉強して改めて記事にします💪