You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在OpenSearch中定义保留指定分隔符为分词的分词器?

在OpenSearch中定义保留指定分隔符的分词器

要实现将lorem123+ipsum-dolar拆分为lorem123、+、ipsum、-、dolar的需求,你可以通过自定义分词器实现,核心是让指定分隔符既作为拆分依据,又被保留为独立分词。以下是具体实现步骤:

1. 创建带自定义分词器的索引

通过PUT请求创建索引,在settings中定义自定义tokenizer和analyzer:

PUT /symbol_aware_index
{
  "settings": {
    "analysis": {
      "tokenizer": {
        // 自定义pattern分词器,匹配字母数字串或指定符号
        "symbol_tokenizer": {
          "type": "pattern",
          "pattern": "([a-zA-Z0-9]+)|([+\\-])",
          "group": 0
        }
      },
      "analyzer": {
        // 组装自定义分词器
        "symbol_preserving_analyzer": {
          "type": "custom",
          "tokenizer": "symbol_tokenizer",
          "filter": ["lowercase"] // 可选:按需添加大小写转换等过滤器
        }
      }
    }
  },
  "mappings": {
    "properties": {
      "content": {
        "type": "text",
        "analyzer": "symbol_preserving_analyzer"
      }
    }
  }
}

关键参数说明

  • pattern正则表达式:([a-zA-Z0-9]+)|([+\\-])表示匹配两种内容:连续的字母数字序列,或者+/-符号。如果需要添加更多分隔符,只需在第二个分组中补充(比如添加*就改成([+\\-*]),注意转义正则特殊字符)。
  • group: 0:表示将整个匹配结果作为独立token返回,确保符号被保留。

2. 验证分词效果

通过_analyze接口测试分词结果:

POST /symbol_aware_index/_analyze
{
  "analyzer": "symbol_preserving_analyzer",
  "text": "lorem123+ipsum-dolar"
}

返回的分词结果将包含:lorem123、+、ipsum、-、dolar(如果启用了lowercase过滤器,字母会转为小写)。

替代方案:字符映射法

你也可以通过字符过滤器先给分隔符前后添加空格,再用标准分词器拆分:

PUT /symbol_aware_index_alt
{
  "settings": {
    "analysis": {
      "char_filter": {
        "symbol_space_mapper": {
          "type": "mapping",
          "mappings": [
            "+ => \\ +",
            "- => \\ -"
          ]
        }
      },
      "analyzer": {
        "symbol_preserving_analyzer": {
          "type": "custom",
          "char_filter": ["symbol_space_mapper"],
          "tokenizer": "standard",
          "filter": ["lowercase"]
        }
      }
    }
  }
}

这种方法通过给+和-前后添加空格,让标准分词器将其识别为独立token,效果与第一种方法一致。

内容的提问来源于stack exchange,提问作者stan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.02 01:50:15