ted*_*uss 11 regex solr edismax
正则表达式允许下面显示的模式匹配语法.我正在尝试实现一个功能强大的搜索工具,尽可能多地实现这些工具.我被告知edismax是这项工作最灵活的工具.下面哪个模式匹配表达式可以用edismax完成?我能做得比edismax好吗?您能否建议我可以使用哪些过滤器和解析器补丁来实现此功能?如果我认为Solr能够实现这些搜索的可接受性能(即服务器端处理时间),我是否会梦想?
来自mysql的正则表达式语法和示例
'fofo' REGEXP '^fo' => true
'fo\no' REGEXP '^fo\no$' => true
'Baaaan' REGEXP 'Ba*n' => true
'Baan' REGEXP '^Ba?n => false'
'Bn' REGEXP 'Ba+n' => false
'pi' REGEXP 'pi|apa' => true
'pipi' REGEXP '^(pi)*$' => true
'aXbc' REGEXP '[a-dXYZ]' => true
'abcde' REGEXP 'a[bcd]{3}e' => true
'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代码,以了解哪些有效,哪些无效.