LoginSignup
2
2

More than 5 years have passed since last update.

Groongaで学ぶ全文検索 2015-12-18

Posted at

今日のお題:ドリルダウン(ファセット検索)

Groongaで学ぶ全検索12/18に参加した際のメモです。
https://groonga.doorkeeper.jp/events/35021

ドリルダウンとは

検索の補助に使う集計機能が全文検索の文脈でのドリルダウン

例)
ショッピングサイトで「TV」で検索すると10,000件の商品がヒットする
更にヒットした商品をカテゴリーなどで絞り込む機能などに利用できる。

家電(8,000件)
書籍(書籍1,000件) 1,000
XXX 100
YYY
.
.
.

  • クリックで絞り込める
    (全文検索の場合にはキーワードを入れる必要がある)

  • 0件の時は出さないなどができるのでユーザーががっかりしない

→わかりやすいユーザーインターフェースを実現できる。

Groongaでのドリルダウンの仕組み

例えば下記のような商品一覧があるとき
Groongaでは列単位でデータを格納する事でドリルダウンを高速化している。

No 名前 大カテゴリー 中カテゴリ
1 ブラビア 家電 コンピュータ
2 Groonga入門 書籍 コンピュータ
3 ルル  
4 今日の料理 書籍   料理

例)

行単位でデータを格納した場合大カテゴリーが書籍の件数を調べるには
各商品毎にバラバラに格納されているため、ハードディスクの様々な場所にアクセスする必要があるが
列単位でデータを格納した場合には、大カテゴリーの件数をカウントすれば良いので連続したデータにアクセスできるため高速に検索できる。

A.行単位でデータを格納した場合

「ブラビア、家電、コンピュータ」「Groonga入門、書籍、コンピュータ」...

B.列単位でデータを格納した場合

大カテゴリー:「家電、書籍、薬、書籍」
中カテゴリ:「コンピュータ、コンピュータ、料理」

多段階のドリルダウン

例)

書籍
→コンピュータ
→料理

その他メモ

  • GroongaはN個のドリルダウンが可能
  • 平均、最大値、最小値、合計なども計算できる
  • 対象が何件かを格納している結果セットはKey,Valueのハッシュテーブルで保持,valueはサイズが固定長のバッファなので分類などの情報も格納できる
  • OLAP(online analytical processing)などオンラインの分析処理などが求められるので、今後は集計処理を速くすることも必要。
2
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2
2