Skip to content

feat: support custom dictionaries for IK tokenizer#1046

Open
jbjvhvhh wants to merge 1 commit into
oceanbase:vldb_2026from
jbjvhvhh:feat/ik-custom-dictionary
Open

feat: support custom dictionaries for IK tokenizer#1046
jbjvhvhh wants to merge 1 commit into
oceanbase:vldb_2026from
jbjvhvhh:feat/ik-custom-dictionary

Conversation

@jbjvhvhh

Copy link
Copy Markdown

Task Description

Add user-defined dictionary support for the IK full-text tokenizer.

Solution Description

Support FULLTEXT_DICT tables, dictionary refresh, and IK parser properties for custom main, stopword, and quantifier dictionaries. Add dictionary validation, TOKENIZE() integration, dynamic cache refresh, and DDL dependency protection.

Passed Regressions

  • observer build passed.
  • Module-layer check passed with no upward edges.
  • ik_custom_dict.test passed.

Upgrade Compatibility

Existing IK indexes continue to use built-in dictionaries by default. The legacy quanitfier_table spelling remains compatible.

Other Information

Dictionary refresh only affects newly indexed data. Existing data requires rebuilding the full-text index.

Release Note

IK full-text indexes and TOKENIZE() now support user-defined dictionaries.

@CLAassistant

Copy link
Copy Markdown

CLA assistant check
Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.


jbjvhvhh seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.
You have signed the CLA already but the status is still pending? Let us recheck it.

@LINxiansheng

Copy link
Copy Markdown
Member

Document AI & IK Custom Dictionary Score

Document AI Functions Score
===========================
score: 0.00 / 100
load_file: 0 / 50
ai_split_document: 0 / 50

IK Custom Dictionary Score
==========================
score: 100.00 / 100
ik_custom_dict: 100 / 100

FTS Large Benchmark Score

FTS Large Benchmark Score
=========================
score: 0.00 / 100
mean_improvement: -0.02%
full_score_improvement: 50.00%

build_improvement: 3.22%
  build_ik_all_sec: baseline=35.2836, current=33.44, improvement=5.23%
  build_ik_content_sec: baseline=28.3764, current=27.445, improvement=3.28%
  build_beng_en_sec: baseline=14.7578, current=14.586, improvement=1.16%
tokenize_improvement: -2.86%
  tokenize_ik_avg_ms: baseline=0.76478, current=0.7822, improvement=-2.28%
  tokenize_beng_avg_ms: baseline=0.42262, current=0.4372, improvement=-3.45%
query_improvement: -0.43%
  query_cn_avg_ms: baseline=16.6628, current=16.826, improvement=-0.98%
  query_beng_avg_ms: baseline=24.3042, current=24.3752, improvement=-0.29%
  query_mixed_avg_ms: baseline=17.5593, current=17.5705, improvement=-0.06%
  query_limit_avg_ms: baseline=16.2334, current=16.2964, improvement=-0.39%

FTS Large Benchmark Report

========================================
FTS Large Benchmark Report
========================================
timestamp:              2026-07-14 02:02:41
label:                  vldb-ci-29299059459-1
git_head:               b216bb9
git_dirty:              0
rows:                   20000
batch:                  500
rounds:                 3000
query_rounds:           200
samples:                3
warmup:                 30
skip_load:              0
----------------------------------------
select1_avg_ms:         0.2161
select1_stdev_ms:       0.0144
raw_load_sec:           1.465
raw_load_rows_per_sec:  13651.9
build_ik_all_sec:       33.440
build_ik_content_sec:   27.445
build_beng_en_sec:      14.586
build_total_sec:        75.488
----------------------------------------
tokenize_ik_avg_ms:     0.7822
tokenize_ik_median_ms:  0.7838
tokenize_ik_stdev_ms:   0.0029
tokenize_beng_avg_ms:   0.4372
tokenize_beng_median_ms:0.4215
tokenize_beng_stdev_ms: 0.0242
----------------------------------------
query_cn_hits:          8001
query_cn_avg_ms:        16.8260
query_cn_stdev_ms:      0.0201
query_beng_hits:        11000
query_beng_avg_ms:      24.3752
query_beng_stdev_ms:    0.0090
query_mixed_hits:       7332
query_mixed_avg_ms:     17.5705
query_mixed_stdev_ms:   0.0127
query_limit_hits:       20
query_limit_avg_ms:     16.2964
query_limit_stdev_ms:   0.0061
========================================

Workflow run

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants