微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

在 Elasticsearch 中忽略重音和复数单数的分析器

如何解决在 Elasticsearch 中忽略重音和复数单数的分析器

当我进行搜索查询时,我正在努力忽略重音和复数/单数。我从这里复制了西班牙语分析器,只留下了词干分析器 https://www.elastic.co/guide/en/elasticsearch/reference/current/analysis-lang-analyzer.html

您可以在 Python 中检查我的代码(我从 CSV 后者批量处理数据):

settings={
  "settings": {
    "analysis": {
      "filter": {
        "spanish_stemmer": {
          "type":       "stemmer","language":   "light_spanish"
        }
      },"analyzer": {
        "rebuilt_spanish": {
          "tokenizer":  "standard","filter": [
            "lowercase","spanish_stemmer"
          ]
        }
      }
    }
  }
}
    
es.indices.create(index="activities",body=settings)

但是,当我尝试从像 geometrico,geométrico,geométricos,geometricos 这样的 insomnia 进行 GET 查询时,我得到 0 个结果,并且有一个标题为 {{ 1}}。它应该匹配,因为我想不区分重音和复数单数。有什么想法吗?

我执行的 GET 查询

Cuerpos geométricos

解决方法

您需要将 ASCII folding token filter 添加到您的令牌过滤器中,请查看官方文档 here。所以你的 Analyzer 应该是这样的:

分析器:

"analysis": {
      "filter": {
        "spanish_stemmer": {
          "type":       "stemmer","language":   "light_spanish"
        }
      },"analyzer": {
        "rebuilt_spanish": {
          "tokenizer":  "standard","filter": [
            "asciifolding",// ASCII folding token filter
            "lowercase","spanish_stemmer"
          ]
        }
      }
    }
  }

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。