[groonga-dev,00786] Re: ベクターカラムをソート順に使えるか

アーカイブの一覧に戻る

Kouhei Sutou kou****@clear*****
2012年 4月 18日 (水) 18:05:30 JST


須藤です。

In <20120****@gmail*****>
  "[groonga-dev,00781] ベクターカラムをソート順に使えるか" on Wed, 18 Apr 2012 10:40:37 +0900,
  Shinya Kawaji <kawaj****@gmail*****> wrote:

> 全体として数十万件のデータが有り、主キーは数字になっています。
> 
> 全文検索が主なのですが、ソート順の指定が別にあり、それが「約 50個の
> キーのうち、優先とするものをいくつか選ぶ」ということになっています。
...
> これを単純に実装する場合、ソート用のカラム A〜Zを全て追加することになる
> と思います。
> 
> ただこのカラムはソート用のものであり、検索条件や出力には使用しません。
> ソート用だけのために 50個ものカラムを追加することに抵抗を感じます。

50個のカラムを追加するのがいいと思います!
理由は、ベクターカラムでソートできないというのももちろんあり
ますが、50個のカラムを追加するほうが効率的だからです。

仮にベクターカラムでソートできたとします。その場合、例えば、
1,2,3番目の値だけがソートに必要なのにも関わらず、50個すべて
の値をメモリ上に読み込む必要があります。

しかし、カラムを別に作ると必要なカラムの値のみ読み込むだけで
すむのでI/Oが減ることを期待できます。これは、groongaがカラム
ストア方式を採用している利点になります。


あと、プログラムの見やすさ的な観点からいうと、「ベクターカラ
ムの3番目の値でソート」と書いているよりも「scoreカラムの値で
ソート」と書いている方が何をやっているのかがわかりやすい、と
いうのがあるので、別々のカラムにして適切な名前をつけた方がよ
いのではないかと思いました。


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

プログラミングが好きなソフトウェア開発者を募集中:
  http://www.clear-code.com/recruitment/




groonga-dev メーリングリストの案内
アーカイブの一覧に戻る