需要一个可以逐点拆分并保留数字的分析器

时间:2017-08-03 08:21:13

标签: elasticsearch analyzer

我想按点分割单词并保留数字,例如: " google.com 123" => [" google"," com"," 123"]

标准分析器不能用点分割单词: " google.com 123" => [" google.com"," 123"]

简单的分析器筛选出数字: " google.com 123" => [" google"," com"]

感谢。

2 个答案:

答案 0 :(得分:0)

如果您知道要分割代币的字符,可以使用pattern tokenizer。您可以指定正则表达式以匹配所有“分割器”。

答案 1 :(得分:0)

[回答问题已经很晚了,但可能会帮助其他有类似问题的人。]

您可以根据自己的规范使用模式正则表达式创建一个简单的模式拆分标记器。

{
  "analyzer": {
    "foo": {
      "tokenizer": "foo_tokenizer",
      "filter": ["lowercase"]
    }
  },
  "tokenizer": {
    "foo_tokenizer": {
      "type": simple_pattern_split",
      "pattern": "\\.| "
    }
  }
}

示例查询:

POST index_name/_analyze
{
  "analyzer": "foo",
  "text": "google.com 123"
}

结果:

{
  "tokens": [
    {
      "token": "google",
      "start_offset": 0,
      "end_offset": 6,
      "type": "word",
      "position": 0
    },
    {
      "token": "com",
      "start_offset": 7,
      "end_offset": 10,
      "type": "word",
      "position": 1
    },
    {
      "token": "123",
      "start_offset": 11,
      "end_offset": 14,
      "type": "word",
      "position": 2
    }
  ]
}