Link Search Menu Expand Document Documentation Menu

语音词元过滤器

phonetic 词元过滤器将词元转换为其语音表示形式,从而实现对发音相似但拼写不同的单词更灵活的匹配。这对于搜索用户可能拼写不同但发音相似的名称、品牌或其他实体特别有用。

phonetic 词元过滤器默认不包含在 OpenSearch 发行版中。要使用此词元过滤器,您必须首先按如下方式安装 analysis-phonetic 插件,然后重新启动 OpenSearch

./bin/opensearch-plugin install analysis-phonetic

有关安装插件的更多信息,请参阅安装插件

参数

phonetic 词元过滤器可以使用以下参数进行配置。

参数 必需/可选 数据类型 描述
encoder 可选 字符串 指定要使用的语音算法。

有效值为
- metaphone(默认)
- double_metaphone
- soundex
- refined_soundex
- caverphone1
- caverphone2
- cologne
- nysiis
- koelnerphonetik
- haasephonetik
- beider_morse
- daitch_mokotoff
replace 可选 布尔型 是否替换原始词元。如果为 false,则原始词元将与语音编码一起包含在输出中。默认为 true

示例

以下示例请求创建了一个名为 names_index 的新索引,并配置了一个带有 phonetic 过滤器的分析器

PUT /names_index
{
  "settings": {
    "analysis": {
      "filter": {
        "my_phonetic_filter": {
          "type": "phonetic",
          "encoder": "double_metaphone",
          "replace": true
        }
      },
      "analyzer": {
        "phonetic_analyzer": {
          "tokenizer": "standard",
          "filter": [
            "my_phonetic_filter"
          ]
        }
      }
    }
  }
}

生成的词元

使用以下请求检查使用该分析器为名称 StephenSteven 生成的词元

POST /names_index/_analyze
{
  "text": "Stephen",
  "analyzer": "phonetic_analyzer"
}

POST /names_index/_analyze
{
  "text": "Steven",
  "analyzer": "phonetic_analyzer"
}

在这两种情况下,响应都包含相同的生成词元

{
  "tokens": [
    {
      "token": "STFN",
      "start_offset": 0,
      "end_offset": 6,
      "type": "<ALPHANUM>",
      "position": 0
    }
  ]
}
剩余 350 字符

有问题?

想贡献?