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

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

  • ^匹配字符串的开头。 'fofo' REGEXP '^fo' => true
  • $匹配字符串的结尾。 'fo\no' REGEXP '^fo\no$' => true
  • * 0个无限制的通配符。 'Baaaan' REGEXP 'Ba*n' => true
  • ? 0-1通配符。 'Baan' REGEXP '^Ba?n => false'
  • + 1个无限通配符。 'Bn' REGEXP 'Ba+n' => false
  • |或者。 'pi' REGEXP 'pi|apa' => true
  • ()*序列匹配。 'pipi' REGEXP '^(pi)*$' => true
  • [a-dX],[^ a-dX]字符范围/设置'aXbc' REGEXP '[a-dXYZ]' => true
  • {n}或{m,n}基数表示法'abcde' REGEXP 'a[bcd]{3}e' => true
  • [:character_class:] 'justalnums' REGEXP '[[:alnum:]]+' => true
  • 最佳答案

    Lucene的4.0版将使用特殊语法在标准查询解析器中直接支持正则表达式查询。我验证了它可以在我正在运行的Solr实例上运行,该实例是从二月份的subversion中继构建的。

    Jira ticket 2604使用特殊的正则表达式语法描述标准查询解析器的扩展,使用正斜杠定界正则表达式,类似于Javascript中的语法。似乎正在使用基础RegexpQuery解析器。

    举个简单的例子:

    body:/[0-9]{5}/
    

    将与我已编入索引的文本语料库中的五位数邮政编码匹配。但是,奇怪的是,body:/\d{5}/对我不起作用,并且^也失败了。

    regex方言必须是Java的方言,但是我不确定它中的所有内容是否都能正常工作,因为我只是进行了粗略的检查。人们可能必须仔细查看RegexpQuery代码,以了解有效的方法和无效的方法。

    10-05 20:29
    查看更多