我想问一下是否存在一些文档,这些文档描述了如何使用 Elasticseach模式正则表达式。
我需要编写模式捕获 token 筛选器,该筛选器仅筛选以特定单词开头的代币。例如,输入 token 流应类似于(“abcefgh”,“abc123”,“aabbcc”,“abc”,“abdef”),而我的 token 生成器将仅返回代币 abcefgh , abc123 , abc ,因为这些 token 以“ abc ”开头。
有人可以帮我实现这个用例吗?
谢谢。
最佳答案
我建议是这样的:
"analysis": {
"analyzer": {
"my_trim_keyword_analyzer": {
"type": "custom",
"tokenizer": "keyword",
"filter": [
"lowercase",
"trim",
"generate_tokens",
"eliminate_tokens",
"remove_empty"
]
}
},
"filter": {
"eliminate_tokens": {
"pattern": "^(?!abc)\\w+$",
"type": "pattern_replace",
"replacement": ""
},
"generate_tokens": {
"type": "pattern_capture",
"preserve_original": 1,
"patterns": [
"(([a-z]+)(\\d*))"
]
},
"remove_empty": {
"type": "stop",
"stopwords": [""]
}
}
}
如果 token 是
pattern_capture
过滤器的结果,则需要在此过滤器之后添加一个在我的示例中称为eliminate_tokens
的过滤器,该过滤器基本上与不以abc
开头的 token 匹配。那些不匹配的将替换为空字符串("replacement": ""
)。此后,为了删除空 token ,我添加了
remove_empty
过滤器,该过滤器基本上是stop
过滤器,其中停用词是""
(空字符串)。
关于regex - Elasticsearch模式正则表达式以,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39022149/