需要一个可以按点和保留数字分割单词的分析器

问题描述 投票:0回答:2

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

标准分析器无法按点分割单词: “google.com 123”=> [“google.com”,“123”]

简单的分析器过滤掉数字: “google.com 123”=> [“google”,“com”]

谢谢。

elasticsearch analyzer
2个回答
0
投票

如果您知道要在哪些字符上分割标记,则可以使用 pattern tokenizer。您可以指定一个正则表达式来匹配所有“拆分器”。


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
    }
  ]
}
© www.soinside.com 2019 - 2024. All rights reserved.