susumu.yata
null+****@clear*****
Fri May 30 19:35:26 JST 2014
susumu.yata 2014-05-30 19:35:26 +0900 (Fri, 30 May 2014) New Revision: fc8f80677b1133987a944c5c19ec3dee0da10807 https://github.com/groonga/grnxx/commit/fc8f80677b1133987a944c5c19ec3dee0da10807 Message: Update TODOs. Modified files: new-interface/table.hpp Modified: new-interface/table.hpp (+25 -1) =================================================================== --- new-interface/table.hpp 2014-05-30 17:57:26 +0900 (8bb8df6) +++ new-interface/table.hpp 2014-05-30 19:35:26 +0900 (42e94c7) @@ -222,6 +222,9 @@ class Table { const CursorOptions &options, Error *error) const = 0; + // TODO: Table には create_expression_builder() を持たせ, + // ExpressionBuilder を使って Expression を作成する方がすっきりする. + // 行 ID の一覧に適用できる式を作成する. // 成功すれば有効なオブジェクトへのポインタを返す. // 失敗したときは *error にその内容を格納し, nullptr を返す. @@ -244,6 +247,8 @@ class Table { const ExpressionOptions &options, Error *error) const = 0; + // TODO: Expression と同じく SorterBuilder を介する方がよさそう. + // 整列器を作成する. // 成功すれば有効なオブジェクトへのポインタを返す. // 失敗したときは *error にその内容を格納し, nullptr を返す. @@ -262,6 +267,10 @@ class Table { const SorterOptions &options, Error *error) const = 0; + // TODO: 分類器については,条件をひとつしか受け付けないのであれば, + // create_grouper() が条件を受け取るようにした方がすっきりする. + // Expression, Sorter にあわせて GrouperBuilder を用意する手もある. + // 分類器を作成する. // 成功すれば有効なオブジェクトへのポインタを返す. // 失敗したときは *error にその内容を格納し, nullptr を返す. @@ -306,6 +315,12 @@ class Table { // // 正直なところ,後者の方が良いのではないかという気がしてきました. // 一度,簡単なプログラムでも作って試してみた方がよいだろうと思います. + // + // 前者を採用するのであれば,行 ID の配列とスコアの配列が個別にサイズを + // 持つような実装は避けたい.しかし,オブジェクトとしては分かれているのに + // 取り扱いが不可分になるのは厄介である. + // + // どちらでも大丈夫なインタフェースを用意したい. // TODO: 検索結果のマージ方法を検討する. // @@ -313,7 +328,16 @@ class Table { // 別の順序になるかもしれないため,そういうケースへの対策が必要である. // 行 ID 順についても,昇順と降順があることに注意が必要である. // - // スコアの合成方法(正規化や加算など)を検討する. + // マージの種類としては,以下のようなものが挙げられる. + // - どちらかに含まれるものを残す. + // - 両方に含まれるものを残す. + // - 片方に含まれていて,もう片方には含まれていないものを残す. + // - XOR と SUBTRACT で区別できる. + // + // スコアの合成方法としては,以下のようなものが使われそうである. + // - 単純に加算したり乗算したりする. + // - 双方を正規化(最大値を 1.0 にするなど)してから加算する. + // - スコアを正規化するインタフェースがあれば,単純な加算にできる. protected: Table(); -------------- next part -------------- HTML����������������������������... Download