Link Search Menu Expand Document Documentation Menu

分词符令牌过滤器

word_delimiter 令牌过滤器用于根据预定义字符分割令牌,并提供基于可自定义规则的可选令牌标准化。

我们建议尽可能使用 word_delimiter_graph 过滤器而不是 word_delimiter 过滤器,因为 word_delimiter 过滤器有时会生成无效的令牌图。有关这两种过滤器之间差异的更多信息,请参阅word_delimiter_graphword_delimiter 过滤器之间的差异

word_delimiter 过滤器用于从复杂标识符(如零件号或产品 ID)中去除标点符号。在这种情况下,最好与 keyword 分词器一起使用。对于带连字符的单词,请使用 synonym_graph 令牌过滤器而不是 word_delimiter 过滤器,因为用户经常使用带连字符和不带连字符的术语进行搜索。

默认情况下,此过滤器应用以下规则。

描述 输入 输出
将非字母数字字符视为分隔符。 ultra-fast ultra, fast
删除令牌开头或结尾的分隔符。 Z99++'Decoder' Z99, Decoder
当大写和小写字母之间存在转换时,分割令牌。 OpenSearch Open, Search
当字母和数字之间存在转换时,分割令牌。 T1000 T, 1000
从令牌末尾移除所有格('s)。 John's John

重要提示:不要将此过滤器与去除标点符号的分词器(如 standard 分词器)一起使用。这样做可能会阻止正确的令牌分割,并干扰 catenate_allpreserve_original 等选项。我们建议将此过滤器与 keywordwhitespace 分词器一起使用。

参数

您可以使用以下参数配置 word_delimiter 令牌过滤器。

参数 必需/可选 数据类型 描述
catenate_all 可选 布尔型 从一系列字母数字部分生成连接的令牌。例如,"quick-fast-200" 变为 [ quickfast200, quick, fast, 200 ]。默认值为 false
catenate_numbers 可选 布尔型 连接数字序列。例如,"10-20-30" 变为 [ 102030, 10, 20, 30 ]。默认值为 false
catenate_words 可选 布尔型 连接字母单词。例如,"high-speed-level" 变为 [ highspeedlevel, high, speed, level ]。默认值为 false
generate_number_parts 可选 布尔型 如果为 true,则数字令牌(仅由数字组成的令牌)包含在输出中。默认值为 true
generate_word_parts 可选 布尔型 如果为 true,则字母令牌(仅由字母字符组成的令牌)包含在输出中。默认值为 true
preserve_original 可选 布尔型 在输出中保留原始令牌(可能包含非字母数字分隔符)以及生成的令牌。例如,"auto-drive-300" 变为 [ auto-drive-300, auto, drive, 300 ]。如果为 true,则此过滤器会生成索引不支持的多位置令牌,因此请勿在索引分析器中使用此过滤器,或在此过滤器之后使用 flatten_graph 过滤器。默认值为 false
protected_words 可选 字符串数组 指定不应分割的令牌。
protected_words_path 可选 字符串 指定一个路径(绝对路径或相对于配置目录的路径),指向一个包含不应按新行分隔的令牌的文件。
split_on_case_change 可选 布尔型 当连续字母大小写不同(一个为小写,另一个为大写)时分割令牌。例如,"OpenSearch" 变为 [ Open, Search ]。默认值为 true
split_on_numerics 可选 布尔型 当存在连续字母和数字时分割令牌。例如,"v8engine" 将变为 [ v, 8, engine ]。默认值为 true
stem_english_possessive 可选 布尔型 移除英语所有格词尾,例如 's。默认值为 true
type_table 可选 字符串数组 一个自定义映射,用于指定如何处理字符以及是否将其视为分隔符,从而避免不必要的分割。例如,要将连字符 (-) 视为字母数字字符,请指定 ["- => ALPHA"],以便单词不会在连字符处分割。有效类型包括
- ALPHA:字母
- ALPHANUM:字母数字
- DIGIT:数字
- LOWER:小写字母
- SUBWORD_DELIM:非字母数字分隔符
- UPPER:大写字母
type_table_path 可选 字符串 指定一个路径(绝对路径或相对于配置目录的路径),指向一个包含自定义字符映射的文件。该映射指定如何处理字符以及是否将其视为分隔符,从而避免不必要的分割。有关有效类型,请参阅 type_table

示例

以下示例请求创建一个名为 my-custom-index 的新索引,并配置一个带有 word_delimiter 过滤器的分析器

PUT /my-custom-index
{
  "settings": {
    "analysis": {
      "analyzer": {
        "custom_analyzer": {
          "tokenizer": "keyword",
          "filter": [ "custom_word_delimiter_filter" ]
        }
      },
      "filter": {
        "custom_word_delimiter_filter": {
          "type": "word_delimiter",
          "split_on_case_change": true,
          "split_on_numerics": true,
          "stem_english_possessive": true
        }
      }
    }
  }
}

生成的词元

使用以下请求检查使用该分析器生成的词元

GET /my-custom-index/_analyze
{
  "analyzer": "custom_analyzer",
  "text": "FastCar's Model2023"
}

响应包含生成的词元

{
  "tokens": [
    {
      "token": "Fast",
      "start_offset": 0,
      "end_offset": 4,
      "type": "word",
      "position": 0
    },
    {
      "token": "Car",
      "start_offset": 4,
      "end_offset": 7,
      "type": "word",
      "position": 1
    },
    {
      "token": "Model",
      "start_offset": 10,
      "end_offset": 15,
      "type": "word",
      "position": 2
    },
    {
      "token": "2023",
      "start_offset": 15,
      "end_offset": 19,
      "type": "word",
      "position": 3
    }
  ]
}  
剩余 350 字符

有问题?

想贡献?