分析字段中的所有大写标记

Analyze all uppercase tokens in a field

我想通过两种方式分析文本字段的值。使用标准分析和仅索引文本中所有大写标记的自定义分析。

例如,如果值为 "This WHITE cat is very CUTE.",则应为自定义分析编制索引的唯一标记是 "WHITE" 和 "CUTE"。为此,我将 Pattern Capture Token Filter 与模式“(\b[A-Z]+\b)+?”一起使用。但这是索引所有标记,而不仅仅是大写标记。

模式捕获令牌过滤器是否适合用于此任务?如果是,我做错了什么?如果没有,我该如何完成?请帮忙。

您应该改用 pattern_replace 和 char_filter:

PUT test
{
  "settings": {
    "analysis": {
      "char_filter": {
        "filter_lowercase": {
          "type": "pattern_replace",
          "pattern": "[A-Z][a-z]+|[a-z]+",
          "replacement": ""
        }
      },
      "analyzer": {
        "my_analyzer": {
          "tokenizer": "standard",
          "char_filter": [
            "filter_lowercase"
          ]
        }
      }
    }
  }
}

GET test/_analyze
{"analyzer": "my_analyzer", 
  "text" : "This WHITE cat is very CUTE"
}