我想问一下是否存在一些描述如何使用Elasticseach模式正则表达式的文档。Elasticsearch模式正则表达式开头
我需要编写模式捕获令牌筛选器哪些过滤器只能使用特定的词开始。例如输入令牌流应该是这样的(“abcefgh”, “ABC123”, “为aabbcc”, “ABC”, “abdef”)和我的标记生成器将只返回托克斯(Tokes)abcefgh,ABC123,ABC因为这些令牌以“abc”开头。
有人可以帮助我如何实现这种用例吗?
感谢。
我想问一下是否存在一些描述如何使用Elasticseach模式正则表达式的文档。Elasticsearch模式正则表达式开头
我需要编写模式捕获令牌筛选器哪些过滤器只能使用特定的词开始。例如输入令牌流应该是这样的(“abcefgh”, “ABC123”, “为aabbcc”, “ABC”, “abdef”)和我的标记生成器将只返回托克斯(Tokes)abcefgh,ABC123,ABC因为这些令牌以“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": [""]
}
}
}
如果您的令牌是pattern_capture
过滤的结果,你需要这个过滤器在我的例子中,一个叫eliminate_tokens
基本上相匹配的令牌,唐后添加不要从abc
开始。那些不匹配的将被空字符串替换("replacement": ""
)。
之后,要删除空令牌,我添加了remove_empty
过滤器,它基本上是一个stop
过滤器,其中停用词是""
(空字符串)。
谢谢你的回答。我尝试了这个和它的工作!我可以再问一个问题吗?如果我想让单词以“abc”或“bca”或“gdfh”开头,怎么办? – user1827257
你改变''reject_tokens'过滤器的正则表达式:'^(?!(abc | bca | gdfh))\\ w + $' –
谢谢,太简单了!真的有用! – user1827257
正则表达式很简单 - 'abc。*'。 –