Elasticsearch-使用通配符的自定义词干替代

时间:2019-01-02 15:25:29

标签: elasticsearch stemming

我已经在Elasticsearch中实现了简单的英语词干。

例如,我可以添加自定义词干替代,以便“ Guitarist” =>“吉他”,但我想将此添加为一般规则,以便“ Guitarist” =>“ Guitar”, “小提琴手=>小提琴”等。

我可以不使用正则表达式来实现吗?

1 个答案:

答案 0 :(得分:0)

对于任何遇到类似问题的人来说,正则表达式似乎是唯一的解决方案。以下示例专门针对以“ ist”结尾的单词。

{
    "analysis": {
        "analyzer": {
            "my_analyzer": {
                "tokenizer": "standard",
                "char_filter": [
                    "ist_filter"
                ],
                "filter": [
                    "lowercase",
                    "my_stem"
                ]
            }
        },
        "filter": {
            "my_stem": {
                "type": "stemmer",
                "language": "light_english"
            }
        },
        "char_filter": {
            "ist_filter": {
                "type": "pattern_replace",
                "pattern": "(.*)ist$",
                "replacement": "$1"
            }
        }
    }
}

可以将排除项添加到模式中,例如下面将忽略“薄雾”和“扭曲”两个词,但这仅适用于(非常)有限的排除项。

"pattern": "^(?!m|tw)(.*)ist$"