0

我一直在尝试在我的一个 doc 字段类型上实现类似雪球分析器keyword的功能。就像,例如复数应该完全像他们的单数一样对待,以便两者的结果相同。

最初,我努力在我的字段上设置分析器,只是为了发现类型的字段keyword不能有分析器而是规范器。所以,我尝试在这些字段上设置一个规范化器,snowball但似乎我的规范化器不允许snowball过滤器(可能是规范化器不支持雪球过滤器)

我无法更改字段的类型。我想实现这样的功能,如果我的输入文本与餐馆匹配,它应该将其视为相同restaurant并给出结果,这样我就不必将餐馆作为关键字添加到该字段。

我们可以通过规范化器实现这一点吗?我浏览了弹性文档和各种帖子,但一无所知。下面是我如何尝试使用弹性服务器的响应设置规范器。

PUT 本地主机:9200/db110/_settings

{
  "analysis": {
    "normalizer": {
      "snowball_normalizer": {
        "filter": ["lowercase","snowball" ]
      }
    },
    "filter" : {
        "snow" : {
            "type" : "snowball",
            "language" : "English"
        }
    }
  }

}

回复

{
    "error": {
        "root_cause": [
            {
                "type": "illegal_argument_exception",
                "reason": "Custom normalizer [snowball_normalizer] may not use filter [snowball]"
            }
        ],
        "type": "illegal_argument_exception",
        "reason": "Custom normalizer [snowball_normalizer] may not use filter [snowball]"
    },
    "status": 400
}
4

1 回答 1

2

你不能那样做!Snowball 是一个词干分析器,它用于全文搜索 - 例如文本数据类型,因为它是一个标记过滤器,可以操作每个标记。使用关键字数据类型,您可以为字段的所有内容创建一个标记。根据您的说法,词干分析器如何适用于关键字字段?使用没有标记的词干分析器没有任何意义。关键字字段的规范化器只有小写和 asciifolding。文档:https ://www.elastic.co/guide/en/elasticsearch/reference/current/normalizer.html

于 2018-02-22T10:11:20.990 回答