我有 pattern_replace 标记过滤器 ( es docs )
'addressPattern' => array(
'type' => 'pattern_replace',
'pattern' => '(str\.|street|and many more like this)',
'replacement' => '',
),
如何使匹配不区分大小写?
最佳答案
很抱歉,这个回答不及时,但我正在搜索 Elasticsearch 中执行不区分大小写的模式匹配的问题。一种方法是您可以使用嵌入式标志:
'pattern' => '(?i)(str\.|street|还有很多类似的)',
嵌入式标志使用 (?xyz) 语法,其中 xyz 是标志。其他标志是“u”代表 unicode 大小写,“m”代表多行,“s”代表 dotall,等等。通常 i 和 s 是最有用的标志,如果使用非英语单词,u 也很有用。请注意,嵌入式标志是上下文相关的 - 如果您将它放在组的开头,它仅适用于该组。
Lucene 使用 Java 的标准库正则表达式,因此有关更多详细信息,请参阅 java docs for util.regex.Pattern或 tutorial on java regex patterns .
关于lucene - pattern_replace 中的不区分大小写的替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19974312/