我正在尝试在elasticsearch中实现一个字符过滤器来执行任务 - 在一个句子中找到一个单词[假设单词是F],该句子可以在一个段落中。它会在同一个句子中为[F]的所有后续单词[A]添加前缀。
作为示例:如果输入文本是 "它并不好而且优秀。你好,世界。我不喜欢它。"将变成"它不是〜好〜和〜优秀。你好,世界。我不喜欢〜它。"
到目前为止,我可以替换单词[F]之后的同一行中的下一个单词。
我的过滤器如下所示:
"char_filter" : {
"post_negs" : {
"type" : "pattern_replace",
"pattern" : "\\b((?i:never|no|not))\\s+(\\w*\\.|\\?|!)",
"replacement" : "$1 ~$2"
}
}
现在我如何使用它实现我的目标。 TIA。
答案 0 :(得分:0)
好的,所以我在你当前制作的正则表达式中看到了一些不一致的内容,以及你想要的最终结果(参考你的例子),但如果我理解你要找的主旨,我想this应该有效:
\b(?!not?\b)(?!never\b)([\w-]+)
替换为~$1
请注意,第一个前瞻符合not
和no
。