语音词元过滤器
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"
]
}
}
}
}
}
生成的词元
使用以下请求检查使用该分析器为名称 Stephen
和 Steven
生成的词元
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
}
]
}