分析字段中的所有大写标记
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"
}
我想通过两种方式分析文本字段的值。使用标准分析和仅索引文本中所有大写标记的自定义分析。
例如,如果值为 "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"
}