lucene - pattern_replace 中的不区分大小写的替换

标签 lucene elasticsearch

我有 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.Patterntutorial on java regex patterns .

关于lucene - pattern_replace 中的不区分大小写的替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19974312/

相关文章:

lucene - 如何处理多个IndexWriter和多个跨进程IndexWriter

elasticsearch - ElasticSearch NEST客户端在Text和TextPhrase之间的区别

elasticsearch - _id在Elasticsearch中未自动生成

elasticsearch - 如何将 score_mode=sum 与 Elasticsearch 多匹配查询一起使用

lucene - 部分词的文档搜索

java - Apache Lucene 中的索引性能

java - 如何使用 TermVector Lucene 4.0

solr - 在 Lucene/Solr 中按最近访问排序

elasticsearch - 结合使用精确的前缀/匹配短语前缀查询和Ngram筛选器

elasticsearch - 如何处理Elasticsearch脚本除法零错误?