Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

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

More than 5 years have passed since last update.

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

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)などオンラインの分析処理などが求められるので、今後は集計処理を速くすることも必要。
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away