ext/groonga/rb-grn-column.c in rroonga-2.0.5 vs ext/groonga/rb-grn-column.c in rroonga-2.0.6

- old
+ new

@@ -29,17 +29,18 @@ * テーブルに情報を付加するためのオブジェクト。テーブルに複 * 数のカラムを定義することによりレコード毎に複数の情報を付 * 加することができる。 * * カラムには大きく分けて3種類ある。 - * [Groonga::FixSizeColumn] - * 固定長のデータを格納するカラム。 - * [Groonga::VariableSizeColumn] - * 可変長のデータを格納するカラム。 - * [Groonga::IndexColumn] + * + * - {Groonga::FixSizeColumn} := + * 固定長のデータを格納するカラム。 =: + * - {Groonga::VariableSizeColumn} := + * 可変長のデータを格納するカラム。 =: + * - {Groonga::IndexColumn} := * 転置インデックスを格納するカラム。全文検索や参照元レコー - * ドの検索を行う場合はこのカラムを使用する。 + * ドの検索を行う場合はこのカラムを使用する。 =: * * 固定長データ用カラム・可変長データ用カラムは1つのデータだ * けを格納するか複数のデータを格納するかを選ぶことができる。 * 1つのデータの場合はスカラ値、複数のデータの場合はスカラー * 値を格納するという。 @@ -108,14 +109,14 @@ if (value) *value = rb_column->value; } /* - * call-seq: - * column.table -> Groonga::Table - * * カラムが所属するテーブルを返す。 + * + * @overload table + * @return [Groonga::Table] */ static VALUE rb_grn_column_get_table (VALUE self) { grn_ctx *context = NULL; @@ -130,18 +131,18 @@ return GRNOBJECT2RVAL(Qnil, context, table, GRN_FALSE); } /* - * call-seq: - * column.local_name - * - * @example テーブル名を除いたカラム名を返す。 + * テーブル名を除いたカラム名を返す。 + * @example * items = Groonga::Array.create(:name => "Items") * title = items.define_column("title", "ShortText") * title.name # => "Items.title" * title.local_name # => "title" + * + * @overload local_name */ static VALUE rb_grn_column_get_local_name (VALUE self) { RbGrnColumn *rb_grn_column; @@ -169,12 +170,12 @@ /* * カラムが所属するテーブルからブロックまたは文字列で指定し * た条件にマッチするレコードを返す。返されたテーブルには * +expression+ という特異メソッドがあり、指定した条件を表し - * ているGroonga::Expressionを取得できる。 - * Groonga::Expression#snippetを使うことにより、指定した条件 + * ている {Groonga::Expression} を取得できる。 + * {Groonga::Expression#snippet} を使うことにより、指定した条件 * 用のスニペットを簡単に生成できる。 * * bc. !!!ruby * results = description_column.select do |column| * column =~ "groonga" @@ -188,66 +189,89 @@ * puts "---" * end * end * * 出力例 + * * <pre> - * rroongaの説明文の中で「groonga」が含まれる部分 - * --- - * rroongaは<em>groonga</em>のいわゆるDB-APIの層の... - * --- + * !!!text + * rroongaの説明文の中で「groonga」が含まれる部分 + * --- + * rroongaは<em>groonga</em>のいわゆるDB-APIの層の... + * --- + * </pre> * * @return [Groonga::Hash] 検索結果 * @overload select(options) * @yieldparam [Groonga::Record] record - * @param [::Hash] options The name and value - * pairs. Omitted names are initialized as the default value. - * @option options :operator (Groonga::Operator::OR) - * マッチしたレコードをどのように扱うか。指定可能な値は以 - * 下の通り。 + * 検索条件を指定するのに、 _record_ に対して次のメソッドを使って検索条 + * 件を指定できます。 * - * [Groonga::Operator::OR] - * マッチしたレコードを追加。すでにレコードが追加され - * ている場合は何もしない。 - * [Groonga::Operator::AND] - * マッチしたレコードのスコアを増加。マッチしなかった - * レコードを削除。 - * [Groonga::Operator::BUT] - * マッチしたレコードを削除。 - * [Groonga::Operator::ADJUST] - * マッチしたレコードのスコアを増加。 + * @==@ 、 @=~@ 、 @<@ 、 @<=@ 、 @>@ 、 @>=@ 、 @+@ 、 @-@ 、 + * @*@ 、 @/@ 、 @%@ 、 + * @match(query, :syntax => :query/:script, &block)@ + * ( _query_ に指定した + * "grn_expr":http://groonga.org/ja/docs/reference/grn_expr.html + * とのマッチ)、 + * @similar_search(text)@ ( _text_ との類似文書探索)、 + * @term_extract(text)@ ( _text_ 内から _record_ の単語を抽出) * - * @option options :result - * 検索結果を格納するテーブル。マッチしたレコードが追加さ - * れていく。省略した場合は新しくテーブルを作成して返す。 + * @!macro [new] column.select.options + * @param [::Hash] options The name and value + * pairs. Omitted names are initialized as the default value. + * @option options :operator (Groonga::Operator::OR) + * マッチしたレコードをどのように扱うか。指定可能な値は以 + * 下の通り。 * - * @option options :name - * 条件の名前。省略した場合は名前を付けない。 + * - Groonga::Operator::OR := + * マッチしたレコードを追加。すでにレコードが追加され + * ている場合は何もしない。 =: + * - Groonga::Operator::AND := + * マッチしたレコードのスコアを増加。マッチしなかった + * レコードを削除。 =: + * - Groonga::Operator::BUT := + * マッチしたレコードを削除。 =: + * - Groonga::Operator::ADJUST := + * マッチしたレコードのスコアを増加。 =: * - * @option options :syntax (:query) - * _query_ の構文。 + * @option options :result + * 検索結果を格納するテーブル。マッチしたレコードが追加さ + * れていく。省略した場合は新しくテーブルを作成して返す。 * - * 参考: Groonga::Expression#parse. + * @option options :name + * 条件の名前。省略した場合は名前を付けない。 * - * @option options :allow_pragma - * query構文時にプラグマを利用するかどうか。省略した場合は - * 利用する。 + * @option options :syntax (:query) + * _query_ の構文。 * - * 参考: Groonga::Expression#parse. + * 参考: {Groonga::Expression#parse} . * - * @option options :allow_column The allow_column - * query構文時にカラム指定を利用するかどうか。省略した場合 - * は利用する。 + * @option options :allow_pragma + * query構文時にプラグマを利用するかどうか。省略した場合は + * 利用する。 * - * 参考: Groonga::Expression#parse. + * 参考: {Groonga::Expression#parse} . * - * @option options :allow_update - * script構文時に更新操作を利用するかどうか。省略した場合 - * は利用する。 + * @option options :allow_column The allow_column + * query構文時にカラム指定を利用するかどうか。省略した場合 + * は利用する。 * - * 参考: Groonga::Expression#parse. + * 参考: {Groonga::Expression#parse} . * + * @option options :allow_update + * script構文時に更新操作を利用するかどうか。省略した場合 + * は利用する。 + * + * 参考: {Groonga::Expression#parse} . + * + * @option options :allow_leading_not + * 指定語句の先頭に-を付けることで指定した語句を含まないレコードの + * 検索を有効にするかどうかを指定する。省略した場合は無効にする。 + * + * 参考: {Groonga::Expression#parse} . + * + * @!macro column.select.options * @overload select(query, options) * @param [String] query 条件の指定 * _query_ には「[カラム名]:[演算子][値]」という書式で条件を * 指定する。演算子は以下の通り。 * @@ -267,122 +291,26 @@ * @"daijiro"@ のレコードにマッチ =: * - @"description:@@@groonga"@ := * _column_ カラムが属しているテーブルの @"description"@ カラムが * @"groonga"@ を含んでいるレコードにマッチ =: * - * @param [::Hash] options The name and value - * pairs. Omitted names are initialized as the default value. - * @option options :operator (Groonga::Operator::OR) - * マッチしたレコードをどのように扱うか。指定可能な値は以 - * 下の通り。 - * - * [Groonga::Operator::OR] - * マッチしたレコードを追加。すでにレコードが追加され - * ている場合は何もしない。 - * [Groonga::Operator::AND] - * マッチしたレコードのスコアを増加。マッチしなかった - * レコードを削除。 - * [Groonga::Operator::BUT] - * マッチしたレコードを削除。 - * [Groonga::Operator::ADJUST] - * マッチしたレコードのスコアを増加。 - * - * @option options :result - * 検索結果を格納するテーブル。マッチしたレコードが追加さ - * れていく。省略した場合は新しくテーブルを作成して返す。 - * - * @option options :name - * 条件の名前。省略した場合は名前を付けない。 - * - * @option options :syntax (:query) - * _query_ の構文。 - * - * 参考: Groonga::Expression#parse. - * - * @option options :allow_pragma - * query構文時にプラグマを利用するかどうか。省略した場合は - * 利用する。 - * - * 参考: Groonga::Expression#parse. - * - * @option options :allow_column The allow_column - * query構文時にカラム指定を利用するかどうか。省略した場合 - * は利用する。 - * - * 参考: Groonga::Expression#parse. - * - * @option options :allow_update - * script構文時に更新操作を利用するかどうか。省略した場合 - * は利用する。 - * - * 参考: Groonga::Expression#parse. - * + * @!macro column.select.options * @overload select(expression, options) * @param [Groonga::Expression] expression 条件を表すオブジェクト - * _expression_ には既に作成済みのGroonga::Expressionを渡す - * - * ブロックで条件を指定する場合は - * {Groonga::ColumnExpressionBuilder} を参照。 - * - * @param [::Hash] options The name and value - * pairs. Omitted names are initialized as the default value. - * @option options :operator (Groonga::Operator::OR) - * マッチしたレコードをどのように扱うか。指定可能な値は以 - * 下の通り。 - * - * [Groonga::Operator::OR] - * マッチしたレコードを追加。すでにレコードが追加され - * ている場合は何もしない。 - * [Groonga::Operator::AND] - * マッチしたレコードのスコアを増加。マッチしなかった - * レコードを削除。 - * [Groonga::Operator::BUT] - * マッチしたレコードを削除。 - * [Groonga::Operator::ADJUST] - * マッチしたレコードのスコアを増加。 - * - * @option options :result - * 検索結果を格納するテーブル。マッチしたレコードが追加さ - * れていく。省略した場合は新しくテーブルを作成して返す。 - * - * @option options :name - * 条件の名前。省略した場合は名前を付けない。 - * - * @option options :syntax (:query) - * _query_ の構文。 - * - * 参考: Groonga::Expression#parse. - * - * @option options :allow_pragma - * query構文時にプラグマを利用するかどうか。省略した場合は - * 利用する。 - * - * 参考: Groonga::Expression#parse. - * - * @option options :allow_column The allow_column - * query構文時にカラム指定を利用するかどうか。省略した場合 - * は利用する。 - * - * 参考: Groonga::Expression#parse. - * - * @option options :allow_update - * script構文時に更新操作を利用するかどうか。省略した場合 - * は利用する。 - * - * 参考: Groonga::Expression#parse. - * + * _expression_ には既に作成済みの {Groonga::Expression} を渡す。 + * @!macro column.select.options */ static VALUE rb_grn_column_select (int argc, VALUE *argv, VALUE self) { grn_ctx *context; grn_obj *table, *column, *result, *expression; grn_operator operator = GRN_OP_OR; VALUE options; VALUE rb_query, condition_or_options; VALUE rb_name, rb_operator, rb_result, rb_syntax; - VALUE rb_allow_pragma, rb_allow_column, rb_allow_update; + VALUE rb_allow_pragma, rb_allow_column, rb_allow_update, rb_allow_leading_not; VALUE builder; VALUE rb_expression = Qnil; rb_query = Qnil; @@ -414,10 +342,11 @@ "name", &rb_name, "syntax", &rb_syntax, "allow_pragma", &rb_allow_pragma, "allow_column", &rb_allow_column, "allow_update", &rb_allow_update, + "allow_leading_not", &rb_allow_leading_not, NULL); if (!NIL_P(rb_operator)) operator = NUM2INT(rb_operator); @@ -435,10 +364,11 @@ builder = rb_grn_column_expression_builder_new(self, rb_name, rb_query); rb_funcall(builder, rb_intern("syntax="), 1, rb_syntax); rb_funcall(builder, rb_intern("allow_pragma="), 1, rb_allow_pragma); rb_funcall(builder, rb_intern("allow_column="), 1, rb_allow_column); rb_funcall(builder, rb_intern("allow_update="), 1, rb_allow_update); + rb_funcall(builder, rb_intern("allow_leading_not="), 1, rb_allow_leading_not); rb_expression = rb_grn_column_expression_builder_build(builder); } rb_grn_object_deconstruct(RB_GRN_OBJECT(DATA_PTR(rb_expression)), &expression, NULL, NULL, NULL, NULL, NULL); @@ -497,31 +427,26 @@ return rb_grn_column_unlock(0, NULL, self); } /* * _column_ をロックする。ロックに失敗した場合は - * Groonga::ResourceDeadlockAvoided例外が発生する。 + * {Groonga::ResourceDeadlockAvoided} 例外が発生する。 * * @overload lock(options={}) - * @param [::Hash] options 利用可能なオプションは以下の通り。 - * @option options :timeout - * ロックを獲得できなかった場合は _:timeout_ 秒間ロックの獲 - * 得を試みる。 _:timeout_ 秒以内にロックを獲得できなかった - * 場合は例外が発生する。 - * @option options :id - * _:id_で指定したレコードをロックする。(注: groonga側が - * 未実装のため、現在は無視される) + * @!macro [new] column.lock.options + * @param [::Hash] options 利用可能なオプションは以下の通り。 + * @option options :timeout + * ロックを獲得できなかった場合は _:timeout_ 秒間ロックの獲 + * 得を試みる。 _:timeout_ 秒以内にロックを獲得できなかった + * 場合は例外が発生する。 + * @option options :id + * _:id_で指定したレコードをロックする。(注: groonga側が + * 未実装のため、現在は無視される) + * @!macro column.lock.options * @overload lock(options={}) * @yield ブロックを指定した場合はブロックを抜けたときにunlockする。 - * @param [::Hash] options 利用可能なオプションは以下の通り。 - * @option options :timeout - * ロックを獲得できなかった場合は _:timeout_秒間ロックの獲 - * 得を試みる。 _:timeout_秒以内にロックを獲得できなかった - * 場合は例外が発生する。 - * @option options :id - * _:id_で指定したレコードをロックする。(注: groonga側が - * 未実装のため、現在は無視される) + * @!macro column.lock.options */ static VALUE rb_grn_column_lock (int argc, VALUE *argv, VALUE self) { grn_id id = GRN_ID_NIL; @@ -628,19 +553,16 @@ return CBOOL2RVAL(grn_obj_is_locked(context, column)); } /* - * Document-method: reference? - * - * call-seq: - * column.reference? -> true/false - * * _column_ の値がテーブルのレコードとなる場合は +true+ を返し、 * そうでない場合は +false+ を返す。 * * @since 1.0.5 + * + * @overload reference? */ static VALUE rb_grn_column_reference_p (VALUE self) { grn_ctx *context; @@ -666,19 +588,16 @@ return Qfalse; } } /* - * Document-method: index? - * - * call-seq: - * column.index? -> true/false - * - * _column_ がGroonga::IndexColumnの場合は +true+ を返し、 + * _column_ が {Groonga::IndexColumn} の場合は +true+ を返し、 * そうでない場合は +false+ を返す。 * * @since 1.0.5 + * + * @overload index? */ static VALUE rb_grn_column_index_p (VALUE self) { grn_ctx *context; @@ -694,19 +613,16 @@ return Qfalse; } } /* - * Document-method: vector? - * - * call-seq: - * column.vector? -> true/false - * * _column_ がベクターカラムの場合は +true+ を返し、 * そうでない場合は +false+ を返す。 * * @since 1.0.5 + * + * @overload vector? */ static VALUE rb_grn_column_vector_p (VALUE self) { grn_ctx *context; @@ -724,18 +640,15 @@ return Qfalse; } } /* - * Document-method: scalar? - * - * call-seq: - * column.scalar? -> true/false - * * _column_ がスカラーカラムの場合は +true+ を返し、 * そうでない場合は +false+ を返す。 * * @since 1.0.5 + * + * @overload scalar? */ static VALUE rb_grn_column_scalar_p (VALUE self) { grn_ctx *context;