# 词干提取
词干提取(Stemming)是一种在搜索时处理单词变体的技术。启用词干提取后,搜索某个单词的一种形式也会匹配该单词的其他语法形式。例如:
- 搜索 "run" 会匹配 "running"、"runs"、"ran"
- 搜索 "walk" 会匹配 "walking"、"walked"、"walks"
- 搜索 "company" 会匹配 "companies"
Typesense 提供了两种处理单词变体的方法:
# 基础词干提取
基础词干提取使用 Snowball stemmer (opens new window) 算法自动检测和处理单词变体。由于基于规则,它适用于配置语言中的常见单词模式,但对于品牌名称、专有名词和地点可能会产生意外的副作用。由于这些规则主要针对普通名词设计,将它们应用于公司名称或地点等专业内容有时会降低搜索相关性。
要为字段启用基础词干提取,在集合模式中设置 "stem": true
:
词干提取使用的语言会根据字段的 locale
参数自动确定。例如,设置 "locale": "fr"
将使用法语特定的词干提取规则。
# 自定义词干提取词典
当您需要更精确地控制单词变体,或者处理算法词干提取无法很好处理的不规则形式时,可以使用词干提取词典。这些词典允许您定义单词与其词根形式之间的精确映射。
# 预置词典
Typesense 提供了一个预置的英文复数词典,用于处理常见的单复数形式变化。你可以从这里下载 (opens new window)。
当您需要可靠地处理英文复数形式,同时避免算法词干提取可能带来的副作用时,这个词典特别有用。
# 创建词干提取词典
首先,创建一个包含单词映射关系的 JSONL 文件:
{"word": "people", "root": "person"}
{"word": "children", "root": "child"}
{"word": "geese", "root": "goose"}
然后使用词干提取词典 API 上传该文件:
# 示例响应
# 使用词干提取词典
要使用词干提取词典,可以在集合模式中使用 stem_dictionary
参数进行指定:
理解词干提取选项
在配置字段的词干提取时:
- 单独使用
"stem": true
会应用默认的 Porter 词干提取算法 - 使用
"stem_dictionary": "dictionary_name"
会自动启用词干提取功能(隐含了"stem": true
) - 当在同一字段上同时显式配置这两个选项时,词典词干提取优先
当你在配置中只指定 stem_dictionary
时,你会注意到 "stem": true
会自动出现在你的模式中,因为系统在配置词典词干提取时会默认启用基础词干提取功能。
# 管理词典
# 获取词典
# 列出所有词典
# 示例响应
# 最佳实践
从基础词干提取开始:对于大多数用例,设置适当的语言环境(locale)的基础词干提取就能很好地处理常见的单词变体。
对例外情况使用词典:在以下情况下添加词干提取词典:
- 特定领域的单词变体
- 基础词干提取无法获得理想结果的情况
特定语言注意事项:请注意基础词干提取行为会根据
locale
参数而变化。请根据内容语言正确设置此参数。