[Groonga-commit] groonga/grnxx at 711fc80 [master] Add options and create() to grnxx::Merger.

Back to archive index

susumu.yata null+****@clear*****
Fri Jun 20 11:16:29 JST 2014


susumu.yata	2014-06-20 11:16:29 +0900 (Fri, 20 Jun 2014)

  New Revision: 711fc80eba7b68c9c472c85f70da86c42be5abeb
  https://github.com/groonga/grnxx/commit/711fc80eba7b68c9c472c85f70da86c42be5abeb

  Message:
    Add options and create() to grnxx::Merger.

  Modified files:
    new-interface/merger.hpp

  Modified: new-interface/merger.hpp (+53 -0)
===================================================================
--- new-interface/merger.hpp    2014-06-20 11:13:49 +0900 (722cb92)
+++ new-interface/merger.hpp    2014-06-20 11:16:29 +0900 (0af0453)
@@ -5,11 +5,64 @@
 
 namespace grnxx {
 
+enum MergeLogicalOperator {
+  // 両方に含まれるレコードを残す.
+  MERGE_LOGICAL_AND,
+
+  // どちらか一方もしくは両方に含まれるレコードを残す.
+  MERGE_LOGICAL_OR,
+
+  // 一方には含まれていて,もう一方には含まれていないものを残す.
+  MERGE_LOGICAL_XOR,
+
+  // 一つ目の入力には含まれていて,二つ目の入力には含まれていないものを残す.
+  MERGE_LOGICAL_SUB
+};
+
+enum MergeScoreOperator {
+  // スコアを加算する.
+  MERGE_SCORE_ADD,
+
+  // スコアを減算する.
+  MERGE_SCORE_SUB,
+
+  // スコアを乗算する.
+  MERGE_SCORE_MUL
+};
+
+struct MergerOptions {
+  // レコードの合成方法.
+  MergeLogicalOperator logical_operator;
+
+  // スコアの合成に用いる演算子.
+  MergeLogicalOperator score_operator;
+
+  MergerOptions();
+};
+
 class Merger {
  public:
   Merger();
   virtual ~Merger();
 
+  // TODO: 入力の順序によって実装の切り替えが必要である.
+  //
+  // TODO: 一気に合成するときは,入力の数によって実装を切り替えたい.
+  //       ただし, Merger の作成時点で出力の順序が確定しなくなる.
+  //
+  // 合成器を作成する.
+  // 成功すれば有効なオブジェクトへのポインタを返す.
+  // 失敗したときは *error にその内容を格納し, nullptr を返す.
+  //
+  // 返り値は std::unique_ptr なので自動的に delete される.
+  // 自動で delete されて困るときは release() で生のポインタを取り出す必要がある.
+  //
+  // 失敗する状況としては,以下のようなものが挙げられる.
+  // - オプションが不正である.
+  // - リソースが確保できない.
+  static std::unique_ptr<Merger> create(Error *error,
+                                        const MergerOptions &options);
+
   // 合成の入出力となるレコードの一覧を設定する.
   // 成功すれば true を返す.
   // 失敗したときは *error にその内容を格納し, false を返す.
-------------- next part --------------
HTML����������������������������...
Télécharger 



More information about the Groonga-commit mailing list
Back to archive index