Elasticsearch标记程序在分析时根据条件(带连字符)组合标记

问题描述 投票:-2回答:1

我正在使用Elasticsearch存储文本,并且正在寻找针对文本字段的自定义分析器。我有很多要求,其中之一就是连字必须组合成一个标记。

例如:字符串“承诺是长期的”应标记为:[长期的承诺]

编辑

得到很少的赞成票,也许我需要具体说明我所尝试的。我尝试使用Pattern Tokenizer指定所有有效令牌。似乎很忙,因为我只有结合连字标记的要求。

我正在寻找类似Char Group Tokenizer的东西,但是具有类似'排除'功能的东西,其中所有符号except'-'将用于分割标记。没有找到更简单的方法来做到这一点。我看过herehere,但没有找到更好的方法。

elasticsearch tokenize
1个回答
0
投票

尝试一下:

设置

PUT my_index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "my_analyzer": {
          "type": "custom",
          "tokenizer": "my_tokenizer"
        }
      },
      "tokenizer": {
        "my_tokenizer": {
          "type": "char_group",
          "tokenize_on_chars": [
            "whitespace"
          ]
        }
      }
    }
  }
}

分析查询

POST my_index/_analyze
{
  "text": ["The commitment is long-term"],
  "analyzer": "my_analyzer"
}

结果

{
"tokens" : [
    {
      "token" : "The",
      "start_offset" : 0,
      "end_offset" : 3,
      "type" : "word",
      "position" : 0
    },
    {
      "token" : "commitment",
      "start_offset" : 4,
      "end_offset" : 14,
      "type" : "word",
      "position" : 1
    },
    {
      "token" : "is",
      "start_offset" : 15,
      "end_offset" : 17,
      "type" : "word",
      "position" : 2
    },
    {
      "token" : "long-term",
      "start_offset" : 18,
      "end_offset" : 27,
      "type" : "word",
      "position" : 3
    }
  ]
}

希望这就是您想要的。

© www.soinside.com 2019 - 2024. All rights reserved.