[groonga-dev,03016] Re: [ANN] Droonga 1.0.9

Back to archive index

Kouhei Sutou kou****@clear*****
2014年 12月 16日 (火) 00:22:50 JST


須藤です。

In <CACEC****@mail*****>
  "[groonga-dev,03010] Re: [ANN] Droonga 1.0.9" on Fri, 12 Dec 2014 18:28:37 +0900,
  funa 1g <funa1****@gmail*****> wrote:

> 数値をIDとして使い、絞り込みを行うことを想定しています。
> インデックスカラムを上のように指定することで高速化できることを期待していますが、正しくない利用方法でしょうか。

別案なんですが、もし数値での絞り込みが、タグ検索のようなこと
を実現するための方法であれば、↓のように参照型にすることでも
効率よく絞り込めます。(元のスキーマのTestIndexのキーを
UInt64からShortTextに変えたものと同じ構造です。)

{
  "dataset":"Default",
  "type":"table_create",
  "body": {
    "name":"Tags",
    "flags":"TABLE_HASH_KEY",
    "key_type":"ShortText"
  }
}
{
  "dataset":"Default",
  "type":"table_create",
  "body": {
    "name":"Test",
    "flags":"TABLE_HASH_KEY",
    "key_type":"UInt64"
  }
}
{
  "dataset":"Default",
  "type":"column_create",
  "body": {
    "table":"Test",
    "name":"tags",
    "flags":"COLUMN_VECTOR",
    "type":"Tags"
  }
}
{
  "dataset":"Default",
  "type":"column_create",
  "body": {
    "table":"Tags",
    "name":"index_test",
    "flags":"COLUMN_INDEX",
    "type":"Test",
    "source":"tags"
  }
}

データを追加するときは次のように文字列で指定するのでデータが
膨らんでそうに見えますが、実際はTagsレコードを参照するID(数
値)を保存しているだけなのでUInt64のデータとインデックスを使
うのと同じくらい省スペースで効率よく動きます。

{
  "dataset":"Default",
  "type":"add",
  "body": {
    "table":"Tags",
    "key":"key1",
    "values": {
      "tags": ["tag1", "tag2"]
    }
  }
}


もし、タグ検索のような絞り込みをしたい場合は、この方法も検討
してみてください!

-- 
須藤 功平 <kou****@clear*****>
株式会社クリアコード <http://www.clear-code.com/>

Groongaベースの全文検索システムを総合サポート:
  http://groonga.org/ja/support/
パッチ採用 - プログラミングが楽しい人向けの採用プロセス:
  http://www.clear-code.com/recruitment/
コードリーダー育成支援 - 自然とリーダブルコードを書くチームへ:
  http://www.clear-code.com/services/code-reader/




groonga-dev メーリングリストの案内
Back to archive index