Solr edismax支持哪些正则表达式功能?

ted*_*uss 11 regex solr edismax

正则表达式允许下面显示的模式匹配语法.我正在尝试实现一个功能强大的搜索工具,尽可能多地实现这些工具.我被告知edismax是这项工作最灵活的工具.下面哪个模式匹配表达式可以用edismax完成?我能做得比edismax好吗?您能否建议我可以使用哪些过滤器和解析器补丁来实现此功能?如果我认为Solr能够实现这些搜索的可接受性能(即服务器端处理时间),我是否会梦想?

来自mysql的正则表达式语法和示例

  1. ^匹配字符串的开头. 'fofo' REGEXP '^fo' => true
  2. $ match end of string. 'fo\no' REGEXP '^fo\no$' => true
  3. *0-无限制的通配符. 'Baaaan' REGEXP 'Ba*n' => true
  4. ?0-1通配符.'Baan' REGEXP '^Ba?n => false'
  5. + 1 - 无限制的通配符. 'Bn' REGEXP 'Ba+n' => false
  6. | 要么.'pi' REGEXP 'pi|apa' => true
  7. ()*序列匹配. 'pipi' REGEXP '^(pi)*$' => true
  8. [a-dX],[^ a-dX]字符范围/设置 'aXbc' REGEXP '[a-dXYZ]' => true
  9. {n}或{m,n}基数表示法 'abcde' REGEXP 'a[bcd]{3}e' => true
  10. [:character_class:] 'justalnums' REGEXP '[[:alnum:]]+' => true

小智 15

Lucene 4.0版将使用特殊语法直接在标准查询解析器中支持正则表达式查询.我验证它适用于我正在运行的Solr实例,它是在2月份从subversion主干构建的.

Jira票证2604描述了使用特殊正则表达式语法的标准查询解析器的扩展,使用正斜杠来划分正则表达式,类似于Javascript中的语法.它似乎使用底层的RegexpQuery解析器.

这是一个简短的例子:

body:/[0-9]{5}/
Run Code Online (Sandbox Code Playgroud)

将匹配我索引的文本语料库中的五位邮政编码.但是,奇怪的是,身体:/\d {5} /对我不起作用,^也失败了.

正则表达式方言必须是Java的,但我不确定它是否有效,因为我只是粗略地检查了一下.人们可能不得不仔细查看RegexpQuery代码,以了解哪些有效,哪些无效.

  • ElasticSearch有[查询语法的良好概述](http://www.elasticsearch.org/guide/en/elasticsearch/reference/current/query-dsl-regexp-query.html#regexp-syntax) (3认同)