elasticsearch 匹配发音相同单词的方案

本文介绍了如何利用Elasticsearch的analysis-phonetic插件进行发音相似单词的匹配,通过设置encoder和replace参数来配置语音分析器。在安装插件后,需要在每个节点上安装并重启,然后在index中设置phonetic分析器。文章提醒,使用'replace': false可能导致意外行为,并建议使用独立字段进行分析。此外,还提供了插件的卸载方法。

友情关注:2021年底即将推出我们墨飞鱼团队历时大半年研发的灵感写作平台,在墨飞鱼这里希望能帮助更多人找到阅读与写作的乐趣, 敬请收藏了解,12月底见哦~

匹配拼写不同但发音相同的单词。像“邮件”和“男性”,我们可以在Elasticsearch中如何进行这样的匹配呢?
这就需要用到analysis-phonetic这个语音分析插件,可以使用插件管理器安裝此插件:

ES中安装analysis-phonetic插件

[root@ecs-bs bin]# ./elasticsearch-plugin install analysis-phonetic
future versions of Elasticsearch will require Java 11; your Java version from [/A_Install/java/jdk1.8.0_171/jre] does not meet this requirement
-> Downloading analysis-phonetic from elastic
[=================================================] 100%   
-> Installed analysis-phonetic

該插件必須安裝在群集中的每個節點上,並且每個節點必須在安裝後重新啟動。

index中设置phonetic分析器

phonetic令牌过滤器需要进行如下设置::

  • encoder
    使用哪个语音编码器。接受metaphone(默认), double_metaphonesoundexrefined_soundexcaverphone1caverphone2colognenysiiskoelnerphonetikhaasephonetikbeider_morsedaitch_mokotoff

  • replace
    原始令牌是否应由phonetic令牌替换。接受true(默认)和false。不支持beider_morse编码 。

index中的设置

PUT phonetic_sample
{
  "settings": {
    "index": {
      "analysis": {
        "analyzer": {
          "my_analyzer": {
            "tokenizer": "standard",
            "filter": [
              "lowercase",
              "my_metaphone"
            ]
          }
        },
        "filter": {
          "my_metaphone": {
            "type": "phonetic",
            "encoder": "metaphone",
            "replace": false
          }
        }
      }
    }
  }
}

注意,“replace”: false可能会因为原始和语音分析器版本都在同一字段的令牌位置而导致意外行为。例如,模糊match 查询的模糊性同义词标记推理不起作用。因此,使用单独的字段进行分析和而不进行phonetic语音过滤是个明智的选择。这样的话,就可以针对具有不同的字段的搜索权重进行提升或折衷计算(例如,仅对match的原始文本字段运行模糊查询,而不对该字段进行phonetic模糊查询)。

移除插件

可以使用以下命令删除该插件:

sudo bin/elasticsearch-plugin remove analysis-phonetic

在删除插件之前,必须先停止该elasticsearch节点。

声明:文章由作者本人的亲历及经验总结,属个人原创文章,欢迎转载并注明出处,个博原文的链接地址见:
https://tech.limuqiao.com/archives/39.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值