前言
在全球化运营的企业或拥有外国籍员工的组织中,内部文档会以多种语言编写。 在日语会议记录、英语技术规格书、中文市场报告等语言混合的环境中,需要能够适当进行搜索的基础设施。
本文假设日语、英语和中文文档共存的环境,构建能够正确搜索各种语言文档的环境。
目标读者
处理多语言文档的组织管理员
希望改善日语以外语言搜索质量的人员
希望学习全文搜索 Analyzer 基础知识的人员
场景
假设一家在日本、美国和中国设有分支机构的企业。
日本分支:创建日语文档(规格书、会议记录、报告书)
美国分支:创建英语文档(技术文档、演示资料)
中国分支:创建中文文档(市场调研、客户信息)
共通:以英语编写的全球政策文档
目标是创建一个各分支机构的员工能够跨语言搜索文档的环境。
多语言搜索基础
全文搜索中的语言处理
全文搜索引擎要使文档可被搜索,需要将文本拆分为”token”(可搜索的单位)。 这一处理过程称为”分词”。
不同语言的分词方法存在很大差异。
英语:以空格分隔的单词直接成为 token。 此外,还会进行词干提取(stemming:running -> run)和小写转换。
日语:由于没有空格分隔,需要使用形态素分析器(如 Kuromoji)将文本拆分为单词。 例如:”全文检索服务器” -> “全文” “检索” “服务器”。
中文:与日语类似,由于没有空格分隔,需要专用的分词器。Fess 使用自研的中文分词器进行处理。
Fess 的多语言支持
Fess 以 OpenSearch 作为后端,可以利用 OpenSearch 提供的多语言 Analyzer。 在 Fess 的默认设置中,日语(Kuromoji)Analyzer 已启用,但也支持其他语言。
Fess 拥有支持 20 多种语言的索引设置,具备自动检测文档语言并应用适当 Analyzer 的功能。
各语言设置
日语设置
日语文档由 Kuromoji Analyzer 处理。 由于 Fess 的默认设置能够适当处理日语,因此不需要特别的额外配置。
但是,通过以下自定义可以提高搜索质量。
用户词典
将行业专用术语和内部术语注册到词典中。 可以在管理界面的 [系统] > [词典] 中选择 Kuromoji 词典进行设置。
例如,当希望复合词作为一个 token 而不是被拆分为多个单词时,此功能很有用。
同义词
处理日语特有的书写变体。
英语设置
英语文档通过 Fess 的多语言索引自动使用适当的 Analyzer 进行处理。
英语特有的自定义包括以下内容。
停用词
常见的英语停用词(the、a、an、is、are 等)默认被排除,但也可以添加行业特有的停用词。
词干覆盖
覆盖特定单词的词干转换。 可以在管理界面的 [系统] > [词典] 中选择 Stemmer 覆盖词典进行设置。
例如,当技术术语发生意外转换时使用。
中文设置
中文文档使用 Fess 自研的中文分词器。 在 Fess 的多语言索引中,简体中文和繁体中文文本都能被正确分词。
中文特有的注意事项包括以下内容。
简体字与繁体字的对应
拼音输入搜索支持
中文特有的同义词设置
多语言环境中的搜索体验
搜索 UI 注意事项
在多语言环境中,搜索 UI 也需要匹配用户的语言。
Fess 具有根据浏览器语言设置自动切换 UI 语言的功能。 搜索界面的 UI 提供了包括日语、英语和中文在内的多种语言。
跨语言搜索注意事项
还存在”用日语关键词查找英语文档”这样的跨语言搜索需求。 目前,Fess 单独并不支持完全自动的翻译搜索,但可以通过以下方法部分地满足这一需求。
多语言同义词设置
将日语和英语的对译注册为同义词。
这样,搜索日语的”会议”时,也会返回包含”meeting”的英语文档。
通过标签进行语言过滤
为每种语言设置标签,使用户能够选择搜索对象的语言范围。
lang-ja:日语文档lang-en:英语文档lang-zh:中文文档
词典管理最佳实践
在多语言环境中,词典管理对搜索质量有重大影响。
按语言进行词典维护
定期词典维护
词典不是设置一次就完成的,需要定期进行审查。
添加新的产品名称和项目名称
清理不再使用的术语
添加从搜索日志中发现的新同义词候选
结合第8回介绍的搜索质量调优周期,持续维护词典。
总结
本文介绍了在日语、英语和中文文档共存环境中构建搜索基础设施的方法。
理解各语言不同的分词处理
Fess 的多语言索引和 Analyzer 设置
日语(Kuromoji)、英语、中文各自的自定义
通过多语言同义词实现跨语言搜索
词典管理最佳实践
多语言支持不是一次配置就能完成的,根据使用情况进行持续改进非常重要。
下一回将介绍搜索系统的稳定运维。