【问题标题】:pattern tokenizer to token string like 222*abc**xyz******332434 as 222,abc,xyz,332434模式标记器到标记字符串,如 222*abc**xyz******332434 为 222,abc,xyz,332434
【发布时间】:2014-08-20 19:32:17
【问题描述】:

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

【问题讨论】:

  • 使标题简短而甜美。在帖子中添加额外信息。

标签: regex indexing elasticsearch tokenize


【解决方案1】:

您可以像这样使用正则表达式:

(\W+)

Working demo

【讨论】:

  • 感谢您的建议,看来这对我有用。当我回到办公室时将在我的开发机器上尝试这个。
  • @user3775217 如果这回答了您的问题,您可以考虑将您的问题标记为已解决:)
【解决方案2】:

如果“任何特殊字符”不是字母数字,您可以在 \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": {}
}'

【讨论】:

  • 感谢您的建议,将在我的开发机器上试试这个
  • 对我很有用,除了单个 .(period) 它没有标记化。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-07-28
  • 1970-01-01
  • 2021-08-23
  • 2020-01-13
  • 2023-04-10
相关资源
最近更新 更多