我想問一下是否存在一些描述如何使用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。*'。 –