Elasticsearch -标准分词器在数字后面按点分割单词

vs91vp4v  于 2023-06-05  发布在  ElasticSearch
关注(0)|答案(1)|浏览(123)

我有一个使用标准标记器的电子邮件字段。电子邮件“john. example.com”被分为“john.smith”和“example.com”,这是我的预期行为。但是,如果电子邮件是“john.smith@ example2.com”,它会将其拆分为“john.smith”、“example 2”、“com”-后一部分由点拆分。
这意味着当我使用查询“example.com”搜索时,我将获得该域中包含电子邮件的记录列表,但如果我搜索“example2.com”,即使有此类电子邮件地址的记录,我也不会有任何结果。
是否有一些变通方法可以实现相同的行为,也就是说,当有数字时,标准的标记器不按点分割?非常感谢提前!

zzlelutf

zzlelutf1#

尝试使用chargroup-tokenizer

GET /_analyze
{
  "tokenizer": {
    "type": "char_group",
    "tokenize_on_chars": [
      "@"
    ]
  },
  "text": "john.smith@example2.com"
}

代币

{
  "tokens": [
    {
      "token": "john.smith",
      "start_offset": 0,
      "end_offset": 10,
      "type": "word",
      "position": 0
    },
    {
      "token": "example2.com",
      "start_offset": 11,
      "end_offset": 23,
      "type": "word",
      "position": 1
    }
  ]
}

相关问题