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;