模式标记符到标记字符串,如222 * abc ** xyz ****** 332434 as 222,abc,xyz,332434

时间:2014-08-20 19:32:17

标签: regex indexing elasticsearch tokenize

我正在努力构建一个分析器,将222*abc**xyz******332434类型的字符串作为222,abc,xyz,332434标记。 *可以替换我的任何特殊字符。除了提供正则表达式,我还需要添加任何过滤器吗?

2 个答案:

答案 0 :(得分:1)

如果"任何特殊字符"是非字母数字,你可以在\W上创建一个简单的模式标记器。

可在此处玩的可运行示例:https://found.no/play/gist/8b2d6dc03731c1e2daef#analysis

export ELASTICSEARCH_ENDPOINT="http://localhost:9200"

curl -XPUT "$ELASTICSEARCH_ENDPOINT/index_name" -d '{
    "settings": {
        "analysis": {
            "analyzer": {
                "myAnalyzer": {
                    "type": "custom",
                    "tokenizer": "specials"
                }
            },
            "tokenizer": {
                "specials": {
                    "type": "pattern",
                    "pattern": "\\W"
                }
            }
        }
    },
    "mappings": {}
}'

答案 1 :(得分:1)

你可以使用这样的正则表达式:

(\W+)

<强> Working demo

enter image description here