elasticsearch-使用通配符自定义词干覆盖

pzfprimi  于 2021-06-15  发布在  ElasticSearch
关注(0)|答案(1)|浏览(280)

我在elasticsearch中实现了轻度英语词干分析。
我可以添加一个自定义的词干覆盖,例如“guitarist”=>“guitar”,但是我想添加这个作为一个一般规则,这样“guitarist”=>“guitar”,“violinist=>小提琴”等等。
不使用regex我能做到这一点吗?

tnkciper

tnkciper1#

对于任何研究类似问题的人来说,regex似乎是唯一的解决方案。下面的例子专门针对以“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"
            }
        }
    }
}

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

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

相关问题