我有一组RegEX规则(100多个规则)可在Lucene索引上进行搜索,该字段使用StandardAnalyzer进行了标记化和分析,类似于本文(Searching for Social security number using Lucene 4 regexp)。 RegexpQuery不适用于分析的字段。 正如@femtoRgon指出SpanQuery可能起作用,我尝试使用SSN,它按预期工作;但是我有100多个正则表达式:
例如查找电子邮件:
([[a-zA-Z0-9 _-])+(。([a-zA-Z0-9 _-]] +) @([[((((([0-1])? ([[0-9])?[0-9])|(2 [0-4] [0-9])|(2 [0-5] [0-5])))。((((( 0-1])?(([0-9])?[0-9])|(2 [0-4] [0-9])|(2 [0-5] [0-5])))) 。((((([0-1])?([0-9])?[0-9])|(2 [0-4] [0-9])|(2 [0-5] [0 -5])))(((((([0-1])?([0-9])?[0-9])|(2 [0-4] [0-9])|(2 [ 0-5] [0-5]))])))(((([[a-zA-Z0-9])+(([-])+([a-zA-Z0-9])+)< / em>。)+([a-zA-Z])+(([-])+([a-zA-Z0-9])+)*))
查找电话号码:
\ s + [\(] {0,1}([0-9]){3} [\)] {0,1} []?([^ 0-1]){1}([0 -9]){2} []?[-]?[]?([0-9]){4} [] *((x){0,1}([0-9]){1,5 }){0,1}
任何人都知道是否有Java代码,我可以将Regex转换为SpanQuery吗?
或者进行任何大型RegEX匹配的建议是可行的吗?
我当时在考虑建立索引时要进行正则表达式匹配,但这会显着降低索引速度。
赞赏任何建议。