本指南说明如何调整 Discourse 设置,以更好地支持网站搜索中的中文、日文和韩文 (CJK) 语言。
所需用户等级:管理员
Discourse 的默认设置可能不适合 CJK(中文、日文、韩文)语言。但是,当您网站的区域设置更改为 CJK 语言(日文、简体中文或繁体中文)时,Discourse 现在会自动调整许多此类设置。本指南将说明哪些设置是自动配置的,以及哪些仍需要您手动调整。
自动区域设置默认值
当您网站的默认区域设置为 ja、zh_CN 或 zh_TW 时,以下设置将自动调整:
| 设置 | 默认值 | CJK 区域设置默认值 |
|---|---|---|
min_search_term_length |
3 | 1 (也适用于 ko) |
min_post_length |
20 | 8 |
min_first_post_length |
20 | 8 |
min_personal_message_post_length |
10 | 3 |
body_min_entropy |
7 | 3 |
min_topic_title_length |
15 | 6 |
title_min_entropy |
10 | 3 |
min_title_similar_length |
10 | 4 |
allow_uppercase_posts |
false | true (ja 仅适用) |
title_prettify |
true | false |
如果您的网站使用这些区域设置之一,通常您无需更改这些设置——它们已经针对 CJK 进行了优化。
手动调整
韩文区域设置
韩文 (ko) 仅针对 min_search_term_length 具有自动区域设置默认值。如果您的网站使用韩文区域设置,您应手动将上述其他设置调整为类似的值。
包含 CJK 内容的多语言或非 CJK 区域设置网站
如果您的网站默认区域设置不是 CJK 语言,但您有大量的 CJK 用户,您需要手动调整这些设置:
- 将
min_search_term_length设置为 1 或 2 — CJK 关键字可以短至一个或两个字符 - 将
min_post_length设置为大约 8 - 将
body_min_entropy设置为大约 3 — 在 CJK 语言中,重复出现很常见且有意义,因此设置过高可能会导致“内容无意义的帖子”错误 - 将
min_topic_title_length设置为大约 6 - 将
title_min_entropy设置为大约 3 - 将
min_title_similar_length设置为大约 4 - 启用
allow_uppercase_posts— Discourse 在分析主题标题的大小写时可能无法识别 CJK 字符,从而导致错误 - 禁用
title_prettify— 标题美化规则是为拉丁字母设计的,可能无法很好地处理 CJK 文本
搜索分词
为了提高搜索准确性,Discourse 提供可选的 CJK 专用分词设置:
search_tokenize_chinese— 启用对中文文本的分词以获得更好的搜索结果search_tokenize_japanese— 启用对日文文本的分词以获得更好的搜索结果
这些默认情况下是禁用的,可以在管理搜索设置中启用。
疑难解答搜索问题
如果您在进行这些更改后遇到搜索功能问题,则可能需要重新索引数据库。操作方法如下:
- 进入您的 Discourse Docker 安装目录。
- 运行以下命令访问应用容器:
./launcher enter app - 进入容器后,运行重新索引命令:
rake search:reindex
重新索引后,您应该能够有效地搜索内容。