Navigation Menu

Skip to content

Commit

Permalink
ii regexp: support multiple matches case
Browse files Browse the repository at this point in the history
  • Loading branch information
kou committed Apr 12, 2017
1 parent 96862f6 commit fc89271
Show file tree
Hide file tree
Showing 3 changed files with 93 additions and 2 deletions.
8 changes: 6 additions & 2 deletions lib/ii.c
Expand Up @@ -7974,8 +7974,10 @@ grn_ii_select_cursor_next(grn_ctx *ctx,
cursor->posting.pos = pos;
cursor->posting.tf = n_occurs;
cursor->posting.weight = tscore;
if (token_info_skip(ctx, *tis, next_rid, next_sid) != GRN_SUCCESS) {
cursor->done = GRN_TRUE;
if (token_info_skip_pos(ctx, *tis, rid, sid, pos + 1) != GRN_SUCCESS) {
if (token_info_skip(ctx, *tis, next_rid, next_sid) != GRN_SUCCESS) {
cursor->done = GRN_TRUE;
}
}
return &(cursor->posting);
}
Expand Down Expand Up @@ -8168,6 +8170,8 @@ grn_ii_select_regexp(grn_ctx *ctx, grn_ii *ii,
if (posting_i->rid == posting->rid &&
posting_i->sid == posting->sid &&
posting_i->pos > pos) {
keep_i = i;
keep_posting = *posting_i;
break;
}
if (posting_i->rid > posting->rid) {
Expand Down
@@ -0,0 +1,62 @@
table_create Memos TABLE_NO_KEY
[[0,0.0,0.0],true]
column_create Memos content COLUMN_SCALAR Text
[[0,0.0,0.0],true]
table_create RegexpTokens TABLE_PAT_KEY ShortText --normalizer NormalizerAuto --default_tokenizer TokenRegexp
[[0,0.0,0.0],true]
column_create RegexpTokens memos_content COLUMN_INDEX|WITH_POSITION Memos content
[[0,0.0,0.0],true]
load --table Memos
[
{"content": "Groonga Groonga"},
{"content": "Groonga Rroonga"},
{"content": "PGroonga PostgreSQL"}
]
[[0,0.0,0.0],3]
log_level --level info
[[0,0.0,0.0],true]
select Memos --filter 'content @~ "g.*ga"' --output_columns content,_score
[
[
0,
0.0,
0.0
],
[
[
[
3
],
[
[
"content",
"Text"
],
[
"_score",
"Int32"
]
],
[
"Groonga Groonga",
3
],
[
"Groonga Rroonga",
2
],
[
"PGroonga PostgreSQL",
1
]
]
]
]
#|i| [object][search][index][key][regexp] <RegexpTokens.memos_content>
#|i| grn_ii_sel > (g.*ga)
#|i| [ii][select][cursor][open] n=1 <g>
#|i| [ii][select][cursor][open] n=1 <ga>
#|i| exact: 3
#|i| hits=3
log_level --level notice
[[0,0.0,0.0],true]
@@ -0,0 +1,25 @@
#$GRN_II_REGEXP_DOT_ASTERISK_ENABLE=yes

table_create Memos TABLE_NO_KEY
column_create Memos content COLUMN_SCALAR Text

table_create RegexpTokens TABLE_PAT_KEY ShortText \
--normalizer NormalizerAuto \
--default_tokenizer TokenRegexp
column_create RegexpTokens memos_content COLUMN_INDEX|WITH_POSITION \
Memos content

load --table Memos
[
{"content": "Groonga Groonga"},
{"content": "Groonga Rroonga"},
{"content": "PGroonga PostgreSQL"}
]

log_level --level info
#@add-important-log-levels info
select Memos \
--filter 'content @~ "g.*ga"' \
--output_columns content,_score
#@remove-important-log-levels info
log_level --level notice

0 comments on commit fc89271

Please sign in to comment.