Kouhei Sutou
null+****@clear*****
Fri Dec 29 15:16:06 JST 2017
Kouhei Sutou 2017-12-29 15:16:06 +0900 (Fri, 29 Dec 2017) New Revision: b41b943b67ae399be1a851642f3b9f49b26bad7d https://github.com/groonga/groonga/commit/b41b943b67ae399be1a851642f3b9f49b26bad7d Message: pat: enable cache for lexicon use by default It pat has tokenizer, it's treated as lexicon use. Modified files: lib/db.c lib/ii.c Modified: lib/db.c (+10 -0) =================================================================== --- lib/db.c 2017-12-29 15:15:43 +0900 (bc2529df2) +++ lib/db.c 2017-12-29 15:16:06 +0900 (94b21e8e9) @@ -46,6 +46,8 @@ typedef struct { unsigned int weight; } weight_uvector_entry; +static const uint32_t GRN_TABLE_PAT_KEY_CACHE_SIZE = 1 << 20; + #define IS_WEIGHT_UVECTOR(obj) ((obj)->header.flags & GRN_OBJ_WITH_WEIGHT) #define GRN_TABLE_GROUPED (0x01<<0) @@ -8896,6 +8898,9 @@ grn_obj_set_info(grn_ctx *ctx, grn_obj *obj, grn_info_type type, grn_obj *value) case GRN_TABLE_PAT_KEY : ((grn_pat *)obj)->tokenizer = value; ((grn_pat *)obj)->header->tokenizer = grn_obj_id(ctx, value); + grn_pat_cache_enable(ctx, + ((grn_pat *)obj), + GRN_TABLE_PAT_KEY_CACHE_SIZE); rc = GRN_SUCCESS; break; case GRN_TABLE_DAT_KEY : @@ -10514,6 +10519,11 @@ grn_ctx_at(grn_ctx *ctx, grn_id id) grn_token_filters_unpack(ctx, &(pat->token_filters), &decoded_spec); + if (pat->tokenizer) { + grn_pat_cache_enable(ctx, + pat, + GRN_TABLE_PAT_KEY_CACHE_SIZE); + } } break; case GRN_TABLE_DAT_KEY : Modified: lib/ii.c (+0 -12) =================================================================== --- lib/ii.c 2017-12-29 15:15:43 +0900 (b6b8e5575) +++ lib/ii.c 2017-12-29 15:16:06 +0900 (f8debec3f) @@ -9595,8 +9595,6 @@ grn_ii_buffer_flush(grn_ctx *ctx, grn_ii_buffer *ii_buffer) ii_buffer->block_pos = 0; } -const uint32_t PAT_CACHE_SIZE = 1<<20; - /* * get_tmp_lexicon returns a temporary lexicon. * @@ -9626,9 +9624,6 @@ get_tmp_lexicon(grn_ctx *ctx, grn_ii_buffer *ii_buffer) GRN_INFO_NORMALIZER, normalizer); grn_obj_set_info(ctx, tmp_lexicon, GRN_INFO_TOKEN_FILTERS, token_filters); - if ((flags & GRN_OBJ_TABLE_TYPE_MASK) == GRN_OBJ_TABLE_PAT_KEY) { - grn_pat_cache_enable(ctx, (grn_pat *)tmp_lexicon, PAT_CACHE_SIZE); - } } } return tmp_lexicon; @@ -10172,10 +10167,6 @@ grn_ii_buffer_open(grn_ctx *ctx, grn_ii *ii, grn_table_flags flags; grn_table_get_info(ctx, ii->lexicon, &flags, NULL, NULL, NULL, NULL); - if ((flags & GRN_OBJ_TABLE_TYPE_MASK) == GRN_OBJ_TABLE_PAT_KEY) { - grn_pat_cache_enable(ctx, (grn_pat *)ii->lexicon, - PAT_CACHE_SIZE); - } return ii_buffer; } else { SERR("failed grn_mkstemp(%s)", @@ -10392,9 +10383,6 @@ grn_ii_buffer_close(grn_ctx *ctx, grn_ii_buffer *ii_buffer) grn_table_flags flags; grn_table_get_info(ctx, ii_buffer->ii->lexicon, &flags, NULL, NULL, NULL, NULL); - if ((flags & GRN_OBJ_TABLE_TYPE_MASK) == GRN_OBJ_TABLE_PAT_KEY) { - grn_pat_cache_disable(ctx, (grn_pat *)ii_buffer->ii->lexicon); - } if (ii_buffer->tmp_lexicon) { grn_obj_close(ctx, ii_buffer->tmp_lexicon); } -------------- next part -------------- HTML����������������������������... URL: https://lists.osdn.me/mailman/archives/groonga-commit/attachments/20171229/d2eeb2f2/attachment-0001.htm