susumu.yata
null+****@clear*****
Thu Nov 12 22:15:04 JST 2015
susumu.yata 2015-11-12 22:15:04 +0900 (Thu, 12 Nov 2015) New Revision: 27ca05aae26d6e3896f9cb76baf72b6d67e9ed22 https://github.com/groonga/groonga/commit/27ca05aae26d6e3896f9cb76baf72b6d67e9ed22 Message: grn_ts: add a stub for --scorer GitHub: #428 Modified files: lib/grn_ts.h lib/proc.c lib/ts.c Modified: lib/grn_ts.h (+3 -3) =================================================================== --- lib/grn_ts.h 2015-11-12 22:23:26 +0900 (06ca2e5) +++ lib/grn_ts.h 2015-11-12 22:15:04 +0900 (7413c72) @@ -38,9 +38,9 @@ extern "C" { * `ctx`. */ grn_rc grn_ts_select(grn_ctx *ctx, grn_obj *table, - const char *filter_ptr, size_t filter_size, - const char *output_columns_ptr, - size_t output_columns_size, + const char *filter_ptr, size_t filter_len, + const char *scorer_ptr, size_t scorer_len, + const char *output_columns_ptr, size_t output_columns_len, size_t offset, size_t limit); #ifdef __cplusplus Modified: lib/proc.c (+1 -0) =================================================================== --- lib/proc.c 2015-11-12 22:23:26 +0900 (ae9baec) +++ lib/proc.c 2015-11-12 22:15:04 +0900 (8f2a791) @@ -1014,6 +1014,7 @@ grn_select(grn_ctx *ctx, const char *table, unsigned int table_len, if (filter_len && (filter[0] == '?') && (ctx->impl->output_type == GRN_CONTENT_JSON)) { ctx->rc = grn_ts_select(ctx, table_, filter + 1, filter_len - 1, + scorer, scorer_len, output_columns, output_columns_len, offset, limit); if (!ctx->rc && cacheable && cache_key_size <= GRN_CACHE_MAX_KEY_SIZE && Modified: lib/ts.c (+25 -12) =================================================================== --- lib/ts.c 2015-11-12 22:23:26 +0900 (2fab403) +++ lib/ts.c 2015-11-12 22:15:04 +0900 (9ebfce3) @@ -616,10 +616,6 @@ grn_ts_writer_output(grn_ctx *ctx, grn_ts_writer *writer, return GRN_SUCCESS; } -/*------------------------------------------------------------- - * API. - */ - /* grn_ts_select_filter() applies a filter to all the records of a table. */ static grn_rc grn_ts_select_filter(grn_ctx *ctx, grn_obj *table, grn_ts_str str, @@ -722,6 +718,14 @@ grn_ts_select_filter(grn_ctx *ctx, grn_obj *table, grn_ts_str str, return GRN_SUCCESS; } +/* grn_ts_select_scorer() adjust scores. */ +static grn_rc +grn_ts_select_scorer(grn_ctx *ctx, grn_obj *table, grn_ts_str str, + grn_ts_record *records, size_t n_records) { + // TODO + return GRN_SUCCESS; +} + /* grn_ts_select_output() outputs the results. */ static grn_rc grn_ts_select_output(grn_ctx *ctx, grn_obj *table, grn_ts_str str, @@ -736,26 +740,35 @@ grn_ts_select_output(grn_ctx *ctx, grn_obj *table, grn_ts_str str, return rc; } +/*------------------------------------------------------------- + * API. + */ + grn_rc grn_ts_select(grn_ctx *ctx, grn_obj *table, - const char *filter_ptr, size_t filter_size, - const char *output_columns_ptr, size_t output_columns_size, + const char *filter_ptr, size_t filter_len, + const char *scorer_ptr, size_t scorer_len, + const char *output_columns_ptr, size_t output_columns_len, size_t offset, size_t limit) { grn_rc rc; - grn_ts_str filter = { filter_ptr, filter_size }; - grn_ts_str output_columns = { output_columns_ptr, output_columns_size }; + grn_ts_str filter = { filter_ptr, filter_len }; + grn_ts_str scorer = { scorer_ptr, scorer_len }; + grn_ts_str output_columns = { output_columns_ptr, output_columns_len }; grn_ts_record *records = NULL; size_t n_records, n_hits; if (!ctx || !table || !grn_ts_obj_is_table(ctx, table) || - (!filter_ptr && filter_size) || - (!output_columns_ptr && output_columns_size)) { + (!filter_ptr && filter_len) || (!scorer_ptr && scorer_len) || + (!output_columns_ptr && output_columns_len)) { return GRN_INVALID_ARGUMENT; } rc = grn_ts_select_filter(ctx, table, filter, offset, limit, &records, &n_records, &n_hits); if (rc == GRN_SUCCESS) { - rc = grn_ts_select_output(ctx, table, output_columns, - records, n_records, n_hits); + rc = grn_ts_select_scorer(ctx, table, scorer, records, n_records); + if (rc == GRN_SUCCESS) { + rc = grn_ts_select_output(ctx, table, output_columns, + records, n_records, n_hits); + } } if (records) { GRN_FREE(records); -------------- next part -------------- HTML����������������������������...Download