[Groonga-commit] groonga/groonga [master] Added examples to query.txt.

Back to archive index

null+****@clear***** null+****@clear*****
2010年 8月 4日 (水) 22:56:58 JST


Daijiro MORI	2010-08-04 13:56:58 +0000 (Wed, 04 Aug 2010)

  New Revision: 7035ddb0057d0e69d2ed49e05d54e2e9efa15c26

  Log:
    Added examples to query.txt.

  Modified files:
    doc/ja/source/developer/query.txt

  Modified: doc/ja/source/developer/query.txt (+62 -0)
===================================================================
--- doc/ja/source/developer/query.txt    2010-08-04 10:00:12 +0000 (259ec50)
+++ doc/ja/source/developer/query.txt    2010-08-04 13:56:58 +0000 (5433bf9)
@@ -126,3 +126,65 @@ suffix()
 
 grn_exprを使って様々な検索クエリを表現することができます。
 
+検索例1
+-------
+
+ GRN_EXPR_CREATE_FOR_QUERY(ctx, table, query, var);
+ grn_expr_append_obj(ctx, query, match, GRN_OP_PUSH, 1);
+ grn_expr_append_obj(ctx, query, column, GRN_OP_PUSH, 1);
+ grn_expr_append_const(ctx, query, string, GRN_OP_PUSH, 1);
+ grn_expr_append_op(ctx, query, GRN_OP_CALL, 3);
+ result = grn_table_select(ctx, table, query, NULL, GRN_OP_OR);
+
+tableのcolumnの値がstringにmatchするレコードをresultに返します。
+
+
+検索例2
+-------
+
+ GRN_EXPR_CREATE_FOR_QUERY(ctx, table, query, var);
+ grn_expr_append_obj(ctx, query, match, GRN_OP_PUSH, 1);
+ grn_expr_append_obj(ctx, query, column1, GRN_OP_PUSH, 1);
+ grn_expr_append_const(ctx, query, string, GRN_OP_PUSH, 1);
+ grn_expr_append_const(ctx, query, exact, GRN_OP_PUSH, 1);
+ grn_expr_append_const(ctx, query, score1, GRN_OP_PUSH, 1);
+ grn_expr_append_op(ctx, query, GRN_OP_CALL, 5);
+ result = grn_table_select(ctx, table, query, NULL, GRN_OP_OR);
+ grn_obj_close(ctx, query);
+ GRN_EXPR_CREATE_FOR_QUERY(ctx, table, query, var);
+ grn_expr_append_obj(ctx, query, match, GRN_OP_PUSH, 1);
+ grn_expr_append_obj(ctx, query, column2, GRN_OP_PUSH, 1);
+ grn_expr_append_const(ctx, query, string, GRN_OP_PUSH, 1);
+ grn_expr_append_const(ctx, query, exact, GRN_OP_PUSH, 1);
+ grn_expr_append_const(ctx, query, score2, GRN_OP_PUSH, 1);
+ grn_expr_append_op(ctx, query, GRN_OP_CALL, 5);
+ grn_table_select(ctx, table, query, result, GRN_OP_ADJUST);
+ grn_obj_close(ctx, query);
+
+tableのcolumn1の値がstringにexactモードでmatchするレコードについて得られるスコア値にscore1を積算してresultにセットします。次に、resultにセットされたレコードのうち、column2の値がstringにexactモードでmatchするレコードについては、matchの結果得られたスコア値にscore2を積算したものを、元のスコア値に加えます。
+
+検索例3
+-------
+
+ GRN_EXPR_CREATE_FOR_QUERY(ctx, table, query, var);
+ grn_expr_append_obj(ctx, query, match, GRN_OP_PUSH, 1);
+ grn_expr_append_obj(ctx, query, column1, GRN_OP_PUSH, 1);
+ grn_expr_append_const(ctx, query, string, GRN_OP_PUSH, 1);
+ grn_expr_append_const(ctx, query, exact, GRN_OP_PUSH, 1);
+ grn_expr_append_const(ctx, query, score1, GRN_OP_PUSH, 1);
+ grn_expr_append_op(ctx, query, GRN_OP_CALL, 5);
+ result = grn_table_select(ctx, table, query, NULL, GRN_OP_OR);
+ grn_obj_close(ctx, query);
+ if (grn_table_size(ctx, result) < t1) {
+   GRN_EXPR_CREATE_FOR_QUERY(ctx, table, query, var);
+   grn_expr_append_obj(ctx, query, match, GRN_OP_PUSH, 1);
+   grn_expr_append_obj(ctx, query, column1, GRN_OP_PUSH, 1);
+   grn_expr_append_const(ctx, query, string, GRN_OP_PUSH, 1);
+   grn_expr_append_const(ctx, query, partial, GRN_OP_PUSH, 1);
+   grn_expr_append_const(ctx, query, score2, GRN_OP_PUSH, 1);
+   grn_expr_append_op(ctx, query, GRN_OP_CALL, 3);
+   grn_table_select(ctx, table, query, result, GRN_OP_OR);
+   grn_obj_close(ctx, query);
+ }
+
+tableのcolumn1の値がstringにexactモードでmatchするレコードについて得られるスコア値にscore1を積算してresultにセットします。得られた検索結果数がt1よりも小さい場合は、partialモードで再度検索し、matchしたレコードについて得られるスコア値にscore2を積算してresultに追加します。




Groonga-commit メーリングリストの案内
Back to archive index