This is an automated email from the ASF dual-hosted git repository.
morningman pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/doris-website.git
The following commit(s) were added to refs/heads/master by this push:
new 2699c44f77b [docs] Document the kuromoji (Japanese) inverted-index
analyzer (#3946)
2699c44f77b is described below
commit 2699c44f77bd4dd2c4af5fd9dee104c702226dfc
Author: Nishant Saharan <[email protected]>
AuthorDate: Mon Sep 7 07:43:11 2026 +0530
[docs] Document the kuromoji (Japanese) inverted-index analyzer (#3946)
This PR adds documentation for the new built-in `kuromoji` parser for
Japanese full-text search, mirroring how the existing `chinese`/`ik`
analyzers are documented. Companion to the BE feature PR
apache/[email protected].
---
.github/workflows/check-md-links.yml | 12 +++++++++---
cspell.json | 2 ++
docs/admin-manual/config/be-config.md | 6 ++++++
docs/key-features/full-text-search.mdx | 1 +
docs/key-features/inverted-index.mdx | 2 +-
.../scalar-functions/string-functions/tokenize.md | 14 ++++++++++++--
.../current/admin-manual/config/be-config.md | 6 ++++++
.../scalar-functions/string-functions/tokenize.md | 14 ++++++++++++--
8 files changed, 49 insertions(+), 8 deletions(-)
diff --git a/.github/workflows/check-md-links.yml
b/.github/workflows/check-md-links.yml
index 5a3b85ffaa6..4dc0984a00c 100644
--- a/.github/workflows/check-md-links.yml
+++ b/.github/workflows/check-md-links.yml
@@ -20,14 +20,20 @@ jobs:
- name: Collect added/modified Markdown files
id: changed
+ env:
+ BASE_REF: ${{ github.event.pull_request.base.ref }}
run: |
# Only added (A) or modified (M) files in this PR — deletions and
renames-source are skipped.
- # Three-dot diff (BASE...HEAD) gives the PR's own changes vs. the
merge-base,
- # so commits that landed on the base branch after this PR diverged
are excluded.
+ # github.event.pull_request.base.sha is the base branch tip from
when the PR was opened,
+ # not the current one, so diffing against it drags in every commit
that landed on the base
+ # branch since then. Resolve the merge base against the base branch
as it is now: the
+ # checkout is refs/pull/<n>/merge, so this leaves exactly the PR's
own changes.
+ BASE_SHA="$(git merge-base "origin/$BASE_REF" HEAD)"
+ echo "Diffing against origin/$BASE_REF ($BASE_SHA)"
{
echo 'files<<EOF'
git diff --name-only --diff-filter=AM \
- "${{ github.event.pull_request.base.sha }}...HEAD" \
+ "$BASE_SHA" HEAD \
-- 'docs/**/*.md' 'docs/**/*.mdx' \
'i18n/zh-CN/docusaurus-plugin-content-docs/current/**/*.md' \
'i18n/zh-CN/docusaurus-plugin-content-docs/current/**/*.mdx'
diff --git a/cspell.json b/cspell.json
index 174650f70c2..7ecae8e2be0 100644
--- a/cspell.json
+++ b/cspell.json
@@ -6,6 +6,8 @@
"words": [
"Cascader",
"colocation",
+ "IPADIC",
+ "kuromoji",
"lakehouse",
"Lakehouse",
"Linkedin",
diff --git a/docs/admin-manual/config/be-config.md
b/docs/admin-manual/config/be-config.md
index a0299d47a84..73a4b8062b2 100644
--- a/docs/admin-manual/config/be-config.md
+++ b/docs/admin-manual/config/be-config.md
@@ -997,6 +997,12 @@ BaseCompaction:546859:
### Storage
+#### `enable_kuromoji_analyzer`
+
+* Type: bool
+* Description: Whether to enable the kuromoji (Japanese) inverted-index
analyzer. Supported since Doris 5.0.0.
+* Default value: false
+
#### `default_num_rows_per_column_file_block`
* Type: int32
diff --git a/docs/key-features/full-text-search.mdx
b/docs/key-features/full-text-search.mdx
index f43ed6fa907..14d2938610c 100644
--- a/docs/key-features/full-text-search.mdx
+++ b/docs/key-features/full-text-search.mdx
@@ -131,6 +131,7 @@ The analyzer is the most consequential choice. It decides
which queries can matc
- **`none`**: no tokenization. The whole value is one term. Good for IDs,
tags, status enums, and exact-match filters.
- **`english`**: ASCII word-break with light normalization. Suitable for
English prose.
- **`chinese`**: Chinese word segmentation with `parser_mode` of
`fine_grained` or `coarse_grained`. Suitable for CJK content.
+- **`kuromoji`** (5.0.0+): Japanese morphological analysis. Japanese has no
spaces between words, so the text is segmented into dictionary-based morphemes.
`parser_mode` selects `search` (default, also breaks long compound nouns apart
for better recall), `normal`, or `extended`. Suitable for Japanese content.
Disabled by default — set `enable_kuromoji_analyzer = true` in `be.conf` to
enable it.
- **`unicode`**: language-agnostic word break for CJK and punctuation. A
reasonable default for mixed content.
- **`standard`**: Unicode text-segmentation tokenizer; works for most
languages.
- **`icu`**: ICU-based tokenizer for languages that need full Unicode
segmentation rules (Thai, Khmer, mixed scripts).
diff --git a/docs/key-features/inverted-index.mdx
b/docs/key-features/inverted-index.mdx
index 47f9533955d..f76783a5910 100644
--- a/docs/key-features/inverted-index.mdx
+++ b/docs/key-features/inverted-index.mdx
@@ -44,7 +44,7 @@ An inverted index is declared in DDL with `INDEX
<name>(<col>) USING INVERTED [P
**Key terms**
- **`Posting list`**: the row-ID set associated with a value or term.
Predicate evaluation becomes a posting-list lookup plus a set operation
(AND/OR/NOT).
-- **`Parser`**: the tokenizer used for text columns. Built-in choices: `none`
(whole-string, default), `english`, `chinese`, `unicode`, `standard`, plus
custom analyzers since 3.1.
+- **`Parser`**: the tokenizer used for text columns. Built-in choices: `none`
(whole-string, default), `english`, `chinese`, `kuromoji` (Japanese, since
5.0.0), `unicode`, `standard`, plus custom analyzers since 3.1.
- **`MATCH operators`**: `MATCH_ANY` (any term), `MATCH_ALL` (all terms),
`MATCH_PHRASE` (adjacent terms), `MATCH_PHRASE_PREFIX`, `MATCH_REGEXP`. They
require an inverted index with a parser; ordinary `=` and `LIKE` do not.
- **`.idx file`**: the on-disk index payload. One `.idx` file lives next to
each segment file under the tablet directory, so the index is segment-bound and
follows the rowset through compaction.
diff --git
a/docs/sql-manual/sql-functions/scalar-functions/string-functions/tokenize.md
b/docs/sql-manual/sql-functions/scalar-functions/string-functions/tokenize.md
index 1bd31e2175b..1cf0befc4a5 100644
---
a/docs/sql-manual/sql-functions/scalar-functions/string-functions/tokenize.md
+++
b/docs/sql-manual/sql-functions/scalar-functions/string-functions/tokenize.md
@@ -27,9 +27,9 @@ The `properties` parameter supports the following key-value
pairs (format: `"key
| Property | Description | Example Values |
|----------|-------------|----------------|
-| `built_in_analyzer` | Built-in analyzer type | `"english"`, `"chinese"`,
`"unicode"`, `"icu"`, `"basic"`, `"ik"`, `"standard"`, `"none"` |
+| `built_in_analyzer` | Built-in analyzer type | `"english"`, `"chinese"`,
`"kuromoji"`, `"unicode"`, `"icu"`, `"basic"`, `"ik"`, `"standard"`, `"none"` |
| `analyzer` | Custom analyzer name (created via `CREATE INVERTED INDEX
ANALYZER`) | `"my_custom_analyzer"` |
-| `parser_mode` | Parser mode (for chinese analyzers) | `"fine_grained"`,
`"coarse_grained"` |
+| `parser_mode` | Parser mode. For `chinese`, controls segmentation
granularity; for `kuromoji`, controls the Japanese segmentation mode | chinese:
`"fine_grained"`, `"coarse_grained"`; kuromoji: `"search"` (default),
`"normal"`, `"extended"` |
| `support_phrase` | Enable phrase support (stores position information) |
`"true"`, `"false"` |
| `lower_case` | Convert tokens to lowercase | `"true"`, `"false"` |
| `char_filter_type` | Character filter type | Varies by filter |
@@ -102,6 +102,15 @@ SELECT TOKENIZE("中华人民共和国国歌", '"built_in_analyzer"="ik"');
[{ "token": "中华人民共和国" }, { "token": "国歌" }]
```
+```sql
+-- Using the kuromoji analyzer for Japanese text (supported since Doris 5.0.0)
+-- In the default search mode, the compound noun is also broken into its parts
+SELECT TOKENIZE("関西国際空港", '"built_in_analyzer"="kuromoji"');
+```
+```
+[{ "token": "関西" }, { "token": "国際" }, { "token": "空港" }]
+```
+
### Example 2: Using custom analyzers
First, create a custom analyzer:
@@ -140,6 +149,7 @@ SELECT TOKENIZE("Hello World",
'"built_in_analyzer"="standard", "support_phrase"
- `standard`: Standard analyzer for general text
- `english`: English language analyzer with stemming
- `chinese`: Chinese text analyzer
+ - `kuromoji`: Japanese morphological analyzer (`parser_mode`: `search`,
`normal`, `extended`). Supported since Doris 5.0.0, and disabled by default —
set `enable_kuromoji_analyzer = true` in `be.conf` to use it.
- `unicode`: Unicode-based analyzer for multilingual text
- `icu`: ICU-based analyzer for advanced Unicode processing
- `basic`: Basic tokenization
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/config/be-config.md
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/config/be-config.md
index 6f707295b64..e13625aa68a 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/config/be-config.md
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/admin-manual/config/be-config.md
@@ -986,6 +986,12 @@ BaseCompaction:546859:
### 存储
+#### `enable_kuromoji_analyzer`
+
+* 类型:bool
+* 描述:是否启用 kuromoji(日文)倒排索引分词器。当为 `false` 时,创建或查询带有 `"parser" = "kuromoji"`
的索引会报错,并提示需要开启此配置。自 Doris 5.0.0 版本起支持。
+* 默认值:false
+
#### `default_num_rows_per_column_file_block`
* 类型:int32
diff --git
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/sql-manual/sql-functions/scalar-functions/string-functions/tokenize.md
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/sql-manual/sql-functions/scalar-functions/string-functions/tokenize.md
index ca907c4449c..07f54a74be7 100644
---
a/i18n/zh-CN/docusaurus-plugin-content-docs/current/sql-manual/sql-functions/scalar-functions/string-functions/tokenize.md
+++
b/i18n/zh-CN/docusaurus-plugin-content-docs/current/sql-manual/sql-functions/scalar-functions/string-functions/tokenize.md
@@ -27,9 +27,9 @@ VARCHAR TOKENIZE(VARCHAR str, VARCHAR properties)
| 属性 | 描述 | 示例值 |
|------|------|--------|
-| `built_in_analyzer` | 内置分词器类型 | `"english"`, `"chinese"`, `"unicode"`,
`"icu"`, `"basic"`, `"ik"`, `"standard"`, `"none"` |
+| `built_in_analyzer` | 内置分词器类型 | `"english"`, `"chinese"`, `"kuromoji"`,
`"unicode"`, `"icu"`, `"basic"`, `"ik"`, `"standard"`, `"none"` |
| `analyzer` | 自定义分词器名称(通过 `CREATE INVERTED INDEX ANALYZER` 创建) |
`"my_custom_analyzer"` |
-| `parser_mode` | 分词器模式(用于中文分词器) | `"fine_grained"`, `"coarse_grained"` |
+| `parser_mode` | 分词器模式。`chinese` 用于控制分词粒度;`kuromoji` 用于控制日文分词模式 | chinese:
`"fine_grained"`, `"coarse_grained"`;kuromoji: `"search"`(默认), `"normal"`,
`"extended"` |
| `support_phrase` | 启用短语支持(存储位置信息) | `"true"`, `"false"` |
| `lower_case` | 将词条转换为小写 | `"true"`, `"false"` |
| `char_filter_type` | 字符过滤器类型 | 根据过滤器而异 |
@@ -102,6 +102,15 @@ SELECT TOKENIZE("中华人民共和国国歌", '"built_in_analyzer"="ik"');
[{ "token": "中华人民共和国" }, { "token": "国歌" }]
```
+```sql
+-- 使用 kuromoji 分词器处理日文文本(自 Doris 5.0.0 版本起支持)
+-- 在默认的 search 模式下,复合词也会被拆分为各个组成部分
+SELECT TOKENIZE("関西国際空港", '"built_in_analyzer"="kuromoji"');
+```
+```
+[{ "token": "関西" }, { "token": "国際" }, { "token": "空港" }]
+```
+
### 示例 2: 使用自定义分词器
首先创建一个自定义分词器:
@@ -140,6 +149,7 @@ SELECT TOKENIZE("Hello World",
'"built_in_analyzer"="standard", "support_phrase"
- `standard`: 标准分词器,用于通用文本
- `english`: 带词干提取的英语分词器
- `chinese`: 中文文本分词器
+ - `kuromoji`: 日文形态素分词器(`parser_mode`: `search`、`normal`、`extended`)。自 Doris
5.0.0 版本起支持,默认关闭 —— 需在 `be.conf` 中设置 `enable_kuromoji_analyzer = true` 才能使用。
- `unicode`: 基于Unicode的多语言文本分词器
- `icu`: 基于ICU的高级Unicode处理分词器
- `basic`: 基础分词
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]